我有一组需要在mysql中进行比较的大值。使用IN或OR进行mysql优化
我可以知道哪个更快吗? 例如:
Opt 1:
SELECT * FROM table WHERE v = 1 or v = 2 or v = 3 or v = 4 or... v = 100
Opt 2:
SELECT * FROM table WHERE v IN (1,2,3,4,5,6,7,8,...,100)
我可以知道哪个选项对于大值更快?有没有更好的解决方案?谢谢。
我有一组需要在mysql中进行比较的大值。使用IN或OR进行mysql优化
我可以知道哪个更快吗? 例如:
Opt 1:
SELECT * FROM table WHERE v = 1 or v = 2 or v = 3 or v = 4 or... v = 100
Opt 2:
SELECT * FROM table WHERE v IN (1,2,3,4,5,6,7,8,...,100)
我可以知道哪个选项对于大值更快?有没有更好的解决方案?谢谢。
假设数字将不是连续,所述IN
子句是优选的,原因有二:
当我在学习数据库我的导师告诉我,他们有效地归结为同样的事情。
从逻辑上说,是的,它们是等效的。但是优化器通常在IN和OR中更好地工作。 – 2010-08-18 21:08:14
好点。我想我当时并没有专门谈论速度问题。 – 2010-08-18 21:14:37
IN列表已排序,因此查找可以作为二分查找完成。一堆OR只是一次评估每个条件一个 ,直到一个匹配:http://lists.mysql.com/mysql/216945 – 2010-08-18 21:13:17