只需将一个连接从LEFT JOIN更改为LEFT HASH JOIN或“LEFT LOOP JOIN”,我的基本查询从6秒到1秒.任何人都可以解释为什么这会导致性能如此大幅度增加以及为什么sql的优化器不能自己解决它?
这大致是sql的样子:
SELECT a.[ID] FROM [TableA] a LEFT HASH JOIN [TableB] b ON b.[ID] = a.[TableB_ID] JOIN [TableC] c ON c.[ID] = a.[TableC_ID] WHERE a.[SomeDate] IS NULL AND a.[SomeStatus] IN ('X','Y','Z') AND c.[SomethingElse] = 'ABC'
表A和B在所有ID字段上都有数百万条记录和索引.使用sql Server 2005.
编辑:一位同事提出了一个LEFT LOOP JOIN,它似乎让它更快…… sql不是我的优势之一,所以我试图理解这些“暗示”是如何帮助的.
解决方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。