Почему этот простой запрос MySQL такой медленный?

Итак, вот очень простая таблица 'tbl':

+---------+---------------------+------+-----+---------+----------------+
| Field   | Type                | Null | Key | Default | Extra          |
+---------+---------------------+------+-----+---------+----------------+
| val     | varchar(45)         | YES  | MUL | NULL    |                |
| id      | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
+---------+---------------------+------+-----+---------+----------------+

И индексы для нее:

+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+
| tbl    |          0 | PRIMARY  |            1 | id          | A         |   201826018 |     NULL | NULL   |      | BTREE      |         |
| tbl    |          1 | val      |            1 | val         | A         |      881336 |     NULL | NULL   | YES  | BTREE      |         |
+--------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+

Я пробую этот простой выбор:

select val from tbl where val = 'iii';

результат: 86208 строк в наборе (0,08 сек)

Но когда я хочу немного изменить его:

select id, val from tbl where val = 'iii';

результат: 86208 строк в наборе (47,30 сек)

У меня есть индекс прямо на coumn, где указывает, все, что я изменяю, является представлением строк результата. Почему такая страшная задержка? (Должен сказать, что я не могу воспроизвести эту задержку каждый раз, когда захочу: даже после «сброса кеша запросов» или установки команды «query_cache_type=off» это можно сделать быстро).

5
задан Igor Shalyminov 9 June 2012 в 20:19
поделиться