2012-05-13 39 views
4

我想知道其中哪些會更快(性能明智)查詢(在MySQL 5.x中的CentOS 5.x的,如果這個問題):使用IN子句與多個SELECT查詢

SELECT * FROM table_name WHERE id=1; 
SELECT * FROM table_name WHERE id=2; 
. 
. 
. 
SELECT * FROM table_name WHERE id=50; 

或。 ..

SELECT * FROM table_name WHERE id IN (1,2,...,50); 

我有大約50 id查詢。我知道通常數據庫連接是昂貴的,但我已經看到IN子句並不是那麼快[有時]。

+0

幾乎肯定是一樣的:但這會更快SELECT * FROM table_name WHERE ID BETWEEN 1 AND 50 –

+0

是的,這可能會,但我沒有連續的順序我的ID,這僅僅是一個例子。 –

+2

請不要給出不具代表性的例子:否則您可能會得到不具代表性的答案。 –

回答

2

恕我直言,你應該嘗試一下,並測量響應時間:IN應該給你更好的性能...
無論如何,如果你的ID是連續的,你可以嘗試

SELECT * FROM table_name WHERE id BETWEEN 1 AND 50 
0

第二會更快,因爲當查詢得到解釋,與MySQL發送查詢,並等待結果的PHP通信過程中的資源消耗,如果你的數據是連續的,你也可以做到這

SELECT * FROM table_name WHERE id <= 50; 
0

我是研究這是在IN子句中使用3000+個值進行實驗之後。由於IN中引用的列沒有鍵控,因此它比個人SELECT s快多了。我的猜測是,在我的情況下,只需要爲該列創建一個臨時索引而不是3000個不同的時間。