H2 如何使用右连接减少查询的执行时间?

H2 如何使用右连接减少查询的执行时间?,h2,H2,如果我没有太多数据,我的右连接查询可以正常工作。但当我的表中有500行或更多行时,查询可能需要5分钟甚至更长时间 如何减少或改进此查询的执行时间: SELECT dlocation.USER_NAME,dtransaction.USER_NAME FROM dlocation RIGHT JOIN dtransaction ON (dtransaction.locationid= dlocation.id) and (dtransaction.isinternational = dlocat

如果我没有太多数据,我的右连接查询可以正常工作。但当我的表中有500行或更多行时,查询可能需要5分钟甚至更长时间

如何减少或改进此查询的执行时间:

SELECT dlocation.USER_NAME,dtransaction.USER_NAME
FROM dlocation RIGHT JOIN dtransaction 
ON (dtransaction.locationid= dlocation.id) and (dtransaction.isinternational = 
dlocation.isinternational) and (dtransaction.USER_NAME= dlocation.USER_NAME)
WHERE dtransaction.typeId = 'Charge' and (dtransaction.USER_NAME is null or 
dlocation.USER_NAME is null)

您需要请求H2来显示此类查询的执行计划

为此,您需要EXPLAIN命令[http://h2database.com/html/commands.html#explain]. 您只需要将它添加到性能调查下的查询前面


由于这是一个连接,您需要确保您的执行计划中没有剩余的表CAN。在您的情况下,可能需要添加索引。

您需要请求H2来显示此类查询的执行计划

为此,您需要EXPLAIN命令[http://h2database.com/html/commands.html#explain]. 您只需要将它添加到性能调查下的查询前面


由于这是一个连接,您需要确保您的执行计划中没有剩余的表CAN。在您的情况下,可能需要添加索引。

可以通过添加以下索引来提高查询的性能:

create index ix1 on dtransaction (typeId, USER_NAME);

create index ix2 on dlocation (id, isinternational, USER_NAME);

通过添加以下索引,可以提高查询的性能:

create index ix1 on dtransaction (typeId, USER_NAME);

create index ix2 on dlocation (id, isinternational, USER_NAME);

Oracle还是SQL Server?这是两个完全不同的数据库products@a_horse_with_no_name我正在运行基于Oracle的H2数据库上的查询…H2肯定不是“基于”Oracle,它是一个完全不同的数据库product@a_horse_with_no_name很抱歉,我确信它更像甲骨文。不管怎样,我正在H2数据库上运行查询。Oracle还是SQL Server?这是两个完全不同的数据库products@a_horse_with_no_name我正在运行基于Oracle的H2数据库上的查询…H2肯定不是“基于”Oracle,它是一个完全不同的数据库product@a_horse_with_no_name很抱歉,我确信它更像甲骨文。无论如何,我正在H2数据库上运行查询。