MySQL - 有效地选择多行

时间:2012-06-13 12:11:45

标签: 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来选择行,是否有效,基于性能..?

还有其他有效的方法吗?

1 个答案:

答案 0 :(得分: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,这意味着它会根据密钥读取所有五行。