日期:2014-05-16  浏览次数:20441 次

关于IN运算的效率问题

关于 IN 运算符的效率问题

如果 IN 的列表项是确定的,那么可以用多个 OR 来代替:

?

SELECT * FROM user WHERE uid IN (2,3,5)

// 等效为:

SELECT * FROM user WHERE (uid=2 OR aid=3 OR aid=5)

?

一般认为,如果是对索引字段进行操作,使用 OR 效率高于 IN,但对于列表项不确定的时候(如需要子查询得到结果),就必须使用 IN 运算符。另外,对于子查询表数据小于主查询的时候,也是适用 IN 运算符的。