有关啊
举个例子吧
select * from table1 where a<1000 and b=1
select * from table1 where b=1 and a<1000
同样的全表扫描情况下,假设a<1000的有90%都符合,b=1的有10%符合,则第一条语句90%的还进行了b=1的比较,第二条语句10%的进行了a<1000的比较,当然是第二条语句的效率高啊
没有关系。
在MS SQL 2008 R2下测试,一个数据量大约是20万条记录的表中,Where各条件前后放置查询速度基本一样。
MS SQL内部是使用了很多查询优化算法的,并不是我们想象的,一条一条去比较,SQL的设计要是笨到那一步,就没法投入实际运用了。
碰巧我在看数据库,where条件有特定的大致顺序。顺序搞乱查询会错误。Oracle采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。
无关