MySQL:Ver 14.12 Distrib 5.0.51b、EditLineラッパーを使用したredhat-linux-gnu(x86_64)用
sql_1:
SELECT SQL_NO_CACHE COUNT(*) FROM `ting_song_info`;
結果 :
+----------+
| COUNT(*) |
+----------+
| 2637447 |
+----------+
1 row in set (0.42 sec)
説明 :
+----+-------------+----------------+-------+---------------+-------------------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------+-------+---------------+-------------------+---------+------+---------+-------------+
| 1 | SIMPLE | ting_song_info | index | NULL | total_listen_nums | 4 | NULL | 2769410 | Using index |
+----+-------------+----------------+-------+---------------+-------------------+---------+------+---------+-------------+
sql_1はキーを使用しますtotal_listen_nums
。
次に、キーを指定します。
sql_2:
SELECT SQL_NO_CACHE COUNT(*) FROM `ting_song_info` USE KEY(`album_id`);
結果 :
+----------+
| COUNT(*) |
+----------+
| 2637447 |
+----------+
1 row in set (5.21 sec)
説明:
+----+-------------+----------------+-------+---------------+----------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------+-------+---------------+----------+---------+------+---------+-------------+
| 1 | SIMPLE | ting_song_info | index | NULL | album_id | 8 | NULL | 2769410 | Using index |
+----+-------------+----------------+-------+---------------+----------+---------+------+---------+-------------+
total_listen_numsのkey_lenは、album_idよりもショットが多いです。
これがsql_1がtotal_listen_numsを使用する理由ですか?