假设我有一张这样的表
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
来选择行,是否有效,基于性能..?
还有其他有效的方法吗?
答案 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,这意味着它会根据密钥读取所有五行。