2017-09-05 66 views

回答

0

謝謝, 我找到了這個問題的答案。 以下查詢可以指示特定查詢命中訪問的行數。

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

more detailed answer

0

EXPLAIN可能會給你瞎猜。下面將是精確的:

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

實施例:

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) 

注意,13行被讀取,而不是5484是在表中。 (這需要一個關於id的KEY。)