我有两张桌子
@T1 TABLE ( Id INT,Date DATETIME ) @T2 TABLE ( Id INT,Date DATETIME )
这些表在(Id,Date)上有非聚集索引
我加入了这些表格
SELECT * FROM T1 AS t1 INNER JOIN T2 AS t2 ON t1.Id = t2.Id WHERE t1.Date <= GETDATE() AND t2.Date <= GETDATE()
这也可以写成
SELECT * FROM T1 AS t1 INNER JOIN T2 AS t2 ON t1.Id = t2.Id AND t1.Date <= GETDATE() AND t2.Date <= GETDATE()
解决方法
表现将是相同的.优化器将识别这一点并创建相同的计划.
另一方面,我不会说他们是平等的.问题的第一种形式更具可读性和普遍预期.
对于使用我手边的一些表的示例,无论我如何编写查询,您都可以看到执行计划完全相同.
您应该能够确定自己的表和数据集的查询计划,以便您可以看到在您的情况下会发生什么.
SELECT * FROM salestable,custtable WHERE salestable.custaccount = custtable.accountnum AND salestable.dataareaid = custtable.dataareaid SELECT * FROM salestable JOIN custtable ON salestable.custaccount = custtable.accountnum AND salestable.dataareaid = custtable.dataareaid SELECT * FROM salestable JOIN custtable ON salestable.custaccount = custtable.accountnum WHERE salestable.dataareaid = custtable.dataareaid
给出了这些执行计划
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。