2

假设我有一张这样的桌子

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

1 回答 1

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。

根据文档,这意味着它根据键读取所有五行。

于 2012-06-13T12:18:06.857 回答