2017-09-05 14 views
0

次のクエリの複雑さ(クエリごとにスキャンされる行)は何ですか?リストとIDのidがテーブルのインデックス番号

select col_name from table where id in (list). 

テーブルはidでインデックスされます。 すべての行は、リスト内にidを持つか、リスト内にidを与えている行だけにアクセスしようとしていますか?

答えて

0

ありがとう、 私はこの質問の答えを見つけました。 次のクエリは、特定のクエリヒットに対してアクセスされた行の数を示します。

explain select col_name from table where id in (list). 

more detailed answer

0

EXPLAINあなたにguesstimateを与える可能性があります。以下は正確であろう。

FLUSH STATUS; 
SELECT ...; 
SHOW SESSION STATUS LIKE 'Handler%'; 

例:13行が読み出されたこと

mysql> SELECT city, population FROM canada WHERE id IN (295560,295007,297104,293500,293583,297001,291726,296573,296239,295210,293022,295192,293038); 
+----------------+------------+ 
| city   | population | 
+----------------+------------+ 
| Abbotsford  |  151685 | 
| Drummondville |  59489 | 
| Duncan   |  22199 | 
| Glace Bay  |  21504 | 
| Grande Prairie |  41463 | 
| New Glasgow |  20322 | 
| Orangeville |  32641 | 
| Ottawa   |  874433 | 
| Prince George |  65558 | 
| Saskatoon  |  198957 | 
| Stratford  |  30234 | 
| Waterloo  |  110800 | 
| White Rock  |  66450 | 
+----------------+------------+ 
13 rows in set (0.01 sec) 

mysql> show session status like 'Handler%'; 
+----------------------------+-------+ 
| Variable_name    | Value | 
+----------------------------+-------+ 
| Handler_commit    | 1  | 
| Handler_delete    | 0  | 
| Handler_discover   | 0  | 
| Handler_external_lock  | 2  | 
| Handler_mrr_init   | 0  | 
| Handler_prepare   | 0  | 
| Handler_read_first   | 0  | 
| Handler_read_key   | 13 | -- Note 
| Handler_read_last   | 0  | 
| Handler_read_next   | 0  | 
| Handler_read_prev   | 0  | 
| Handler_read_rnd   | 0  | 
| Handler_read_rnd_next  | 0  | 
| Handler_rollback   | 0  | 
| Handler_savepoint   | 0  | 
| Handler_savepoint_rollback | 0  | 
| Handler_update    | 0  | 
| Handler_write    | 0  | 
+----------------------------+-------+ 
18 rows in set (0.00 sec) 

注意、ないテーブルである5484。 (これにはidのキーが必要です)

関連する問題