sql-server – ON与WHERE的索引性能
发布时间:2020-08-01 19:45:05 所属栏目:MsSql 来源:互联网
导读:我有两张桌子 @T1 TABLE( Id INT, Date DATETIME)@T2 TABLE( Id INT, Date DATETIME) 这些表在(Id,Date)上有非聚集索引 我加入了这些表格 SELECT *FROM T1 AS t1INNER JOIN T2 AS t2ON t1.Id = t2.IdWHERE
|
我有两张桌子 @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 给出了这些执行计划 (编辑:日照站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 分享SQL Server删除重复行的6个方法
- SQL Server中的T-SQL的基本对象
- sql server中通过查询分析器实现数据库的备份与恢复方法分享
- SQL JOIN 连接详细介绍及简单使用实例
- sql-server – 使用AlwaysOn可用性组时收缩事务日志
- SQL中函数 replace 的参数1的数据类型ntext无效的解决方法
- sql-server – 关于作为Head Blocker的SQL连接,我该怎么办?
- 数据库 – Django:如何为异构数据类型树建模?
- sql – 在Oracle中,如何将诸如1之类的数字转换为字符串,例如
- Sqlserver 自定义函数 Function使用介绍
