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=? ,依次类推,所在要把效率高的条件放在最后,一为了缩小数据集的范围,二提高效率。
------解决方案--------------------------------------------------------
以前还不清楚呐 呵呵