Простой запрос MySQL не использует индекс - PullRequest
2 голосов
/ 07 июля 2011

У меня очень странная проблема с MySQL и простой запрос с простым индексом. Я пытаюсь использовать этот запрос:

SELECT * FROM `counter_links` WHERE `link_id`=1544;

Как вы можете видеть, есть также индекс с именем link_id:

mysql> show indexes from counter_links;
+---------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
| Table         | Non_unique | Key_name    | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment  | Index_comment |
+---------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
| counter_links |          1 | link_id     |            1 | link_id     | A         |        NULL |     NULL | NULL   |      | BTREE      | disabled |               |
+---------------+------------+-------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+----------+---------------+
1 row in set (0.12 sec)

Но посмотрите, что EXPLAIN вернул:

mysql> explain SELECT * FROM `counter_links` WHERE `link_id`=1544;
+----+-------------+---------------+------+---------------+------+---------+------+----------+-------------+
| id | select_type | table         | type | possible_keys | key  | key_len | ref  | rows     | Extra       |
+----+-------------+---------------+------+---------------+------+---------+------+----------+-------------+
|  1 | SIMPLE      | counter_links | ALL  | NULL          | NULL | NULL    | NULL | 22103687 | Using where |
+----+-------------+---------------+------+---------------+------+---------+------+----------+-------------+
1 row in set (0.03 sec)

Почему mySQL там не использует индекс? Я вижу, что то же самое хорошо работает с уменьшенной версией таблицы, но я не могу понять, в чем проблема. Вы делаете?

Это более странно, чем кажется, потому что более низкие идентификаторы иногда работают с индексом.

Спасибо за все комментарии заранее!

ура!

Якуб

1 Ответ

3 голосов
/ 07 июля 2011

В поле комментария для eindex указано, что индекс равен disabled, не знаю почему.

ALTER TABLE ... ENABLE KEYS могут работать

...