2012-06-13 54 views
2

可以說我有這樣的MySQL的 - 選擇多行有效

WEB_LIST_TABLE表

 KEY    Value 
---------------------------------------- 
    134    google.com 
    187    yahoo.com 
    353    facebook.com 

於是就可能是一百萬行

鍵是主鍵,如果我想選擇50行,使用該密鑰,如

Select * from WEB_LIST_TABLE where KEY in (134,187,...); 

我米使用where KEY in用於選擇行,根據性能是否有效?

有沒有其他有效的方法來做到這一點?

回答

4

這是有效的,因爲key被索引。 MySQL將使用索引來獲取所需的行。

mysql>FLUSH STATUS; 
mysql>SELECT * FROM WEB_LIST_TABLE WHERE KEY IN (134,187,192,241,10); 
... 
mysql>SHOW STATUS LIKE 'Handler_%'; 
+----------------------------+-------+ 
| Variable_name    | Value | 
+----------------------------+-------+ 
| Handler_read_first   | 0  | 
| Handler_read_key   | 5  | 
| Handler_read_next   | 0  | 
| Handler_read_prev   | 0  | 
| Handler_read_rnd   | 0  | 
| Handler_read_rnd_next  | 0  | 
+----------------------------+-------+ 

正如你所看到的,Handler_read_key是5

根據documentation這意味着它讀取基於關鍵字的所有五個行。

+0

事實上,沒有比這更快的方法。 – cherouvim