我有一組需要在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