2

このようなテーブルがあるとしましょう

WEB_LIST_TABLE

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

したがって、100万行になる可能性があります

キーは主キーであり、次のようなキーを使用して 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_key5です。

ドキュメントによると、これはキーに基づいて5行すべてを読み取ることを意味します。

于 2012-06-13T12:18:06.857 に答える