关于mySQLin wheree in使用中的问题

版权声明:凡欲转载者当先告知作者,得到允许后方可转载! /shiwanwu/article/details/

数据,数据命根就在数据 ! 操作数据库时,一定要谨慎小心师万物 的代码看看就好,要有自己的判断遇到抉择,要不耻上下问


对于许多数据库服务器而言IN()列表不过是多个OR语句的同义词而已,因为IN和OR在逻辑上是等同的不仅是在MySQL数据库服务器,对于许多其他的数据库服务器使用到IN查询时都是按照如下方式处理的:
[1] 对IN列表中的数值进行排序。
[2] 对于查询的匹配每次使用二分查找去匹配IN列表的数值。
所以对于第[2]步每次比较的算法複杂度大概为O(log n)。相反对于同样逻辑的OR列表,每次都要遍历所以OR相应的算法复杂度为O(n)(因此对于遍历非常大的OR列表,会很缓慢!)

因此,茬了解了IN和OR的区别之后每次优化,我们可以采用如下方式:


1.尽量将能使用IN来代替OR查询
2.对IN列表中的数据,写SQL的时候排好序避免MySQL来做这個工作。

我要回帖

更多关于 in where 的文章

 

随机推荐