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

How to reduce execution time on query with right join?

如果我没有太多数据,我的右连接查询工作正常。但是当我的 table 中有 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]。您只需将其添加到性能调查中的查询前面即可。

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

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

create index ix1 on dtransaction (typeId, USER_NAME);

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