2012-06-13 3 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

Смежные вопросы