查询优化对于SQL Server有不同顺序的WHERE子句有什么区别吗?SQL Server的WHERE子句的排序
例如,将这个查询计划:
select * from table where col1 = @var1 and col2 = @var2
不同从这个?:
select * from table where col2 = @var2 and col1 = @var1
当然,这是一个人为的例子,我曾尝试更复杂的了。查询计划对于两者来说都是一样的,但我总是想知道是否值得排序WHERE子句,使得最具体的子句最先出现,以防优化器以某种方式“修剪”结果并最终变得更快。
这实际上只是一个思想实验,我并不想解决特定的性能问题。
其他RDBMS的呢?
如果col1有一个索引,而col2没有,它可能会有所不同。 – rsp 2009-11-10 10:50:05
@rsp从人们所说的话来看,如何格式化查询并不会产生什么影响 - 查询优化器无论如何都会自己动手,并根据哪些列有索引等命令谓词。 – 2009-11-10 11:07:51