当前位置: 代码迷 >> 高性能数据库开发 >> 求解select 后的where 条件婚配顺序
  详细解决方案

求解select 后的where 条件婚配顺序

热度:7104   发布时间:2013-02-26 00:00:00.0
求解select 后的where 条件匹配顺序
select * from tb  where a=? ,b=? ,c=? d in(1,2,3,4)的过程是怎样的?
在sql语句执行后,数据库查询是一条一条匹配where后面的条件的么?
比如 第一条 a匹配成功,b匹配成功,c匹配成功d匹配成功
然后匹配第二条,a匹配成功,b匹配不成功,继续匹配吓一跳
然后匹配第三条 a匹配不成功,继续匹配下一条
然后匹配第四条, a匹配成功,b匹配成功,c匹配成功d匹配不成功?
请问是这样吗?

如果是这样的话,在大数据量的表中是不是
类似select * from tb in  (select * from tb where a =? and b in(select b from tb where b = ? ))
这种的效率比较高?
------解决方案--------------------------------------------------------
sql的条件是从后向后解析
先判断d in(1,2,3,4),符合条件再判断c=? ,依次类推,所在要把效率高的条件放在最后,一为了缩小数据集的范围,二提高效率。
------解决方案--------------------------------------------------------
引用:
sql的条件是从后向后解析
先判断d in(1,2,3,4),符合条件再判断c=? ,依次类推,所在要把效率高的条件放在最后,一为了缩小数据集的范围,二提高效率。

以前还不清楚呐 呵呵 
  相关解决方案