jra*_*ara 2 sql t-sql sql-server sql-server-2008
这两个查询之间的性能有差异吗?
--= operator
SELECT COL1, COL2
FROM DBO.MYTABLE
WHERE COL1 = '1'
--like operator
SELECT COL1, COL2
FROM DBO.MYTABLE
WHERE COL1 LIKE '1'
Run Code Online (Sandbox Code Playgroud)
在这种情况下基本上使用LIKE是错误的,但数据库引擎接受此.
查看以下帖子.
引用(如果它离线):
我的下意识反应是=会更快,但我想到了它并意识到查询优化器实际上会将它们看作同样的事情.针对快速创建的tbFoo检查查询计划确认了它.这就是我告诉他的.
除了我稍后意识到有一个重要的警告 - 查询优化取决于语句的参数化方式.如果它是纯粹的临时SQL并且在运行时被编译,那么语句是等价的,但是如果要重新使用任何计划,可以通过在存储过程中包含语句或者准备它并通过sp_executesql执行, LIKE会施加重大惩罚.
这是因为优化器在编译时不知道LIKE运算符的参数是否包含通配符,因此它不能使用与=运算符相关的更具体的优化(包括索引选择).因此,如果您主要传递没有通配符的参数,那么您将执行次优的查询计划.在设计查询时请记住这一点!
| 归档时间: |
|
| 查看次数: |
680 次 |
| 最近记录: |