Nei*_*ell 2 sql-server performance
查询优化是否可以使SQL Server的WHERE子句的顺序不同?
例如,查询计划是这样的:
select * from table where col1 = @var1 and col2 = @var2
Run Code Online (Sandbox Code Playgroud)
与此不同?:
select * from table where col2 = @var2 and col1 = @var1
Run Code Online (Sandbox Code Playgroud)
当然这是一个人为的例子,我尝试过更复杂的例子.查询计划对于两者都是相同的,但我总是想知道是否值得订购WHERE子句,以便最具体的条款首先出现,以防优化器以某种方式"修剪"结果并最终可能更快.
这实际上只是一个思想实验,我不打算解决具体的性能问题.
其他RDBMS也呢?
每个现代RDBMS都有一个查询优化器,除其他外,它负责重新排序条件.一些优化器使用非常复杂的统计数据来做到这一点,并且它们经常超越人类的直觉,关于什么是好的排序,什么不是.所以我的猜测是:如果你可以肯定地说"这个排序比另一个好",那么优化器也可以,并且它会自己解决.
结论:不要担心这样的事情.这很少值得花时间.
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |