MySQL не использует индексы в запросе

Запрос SELECT * FROM surv_tokens WHERE token=1111111111;

Индекс на token создан

В token уникальное числовое целое значение всегда без NA

В surv_tokens более 10 млн записей

ответ explain:

id, select_type, table,             type, possible_keys,         key,  key_len, ref,  rows,     Extra
1,  SIMPLE,      surv_tokens_27648, ALL,  idx_surv_tokens_token, NULL, NULL,    NULL, 10316268, "Using where"
key= null
possible_keys

видит, но не использует.

Почему?

key_buffer_size = 268435456
Размер таблицы 2Гб
index length таблицы 975 Мб

Пробовал уникальный и не уникальный индекс. И не надо говорить, что движок базы данных считает использования индекса неэффективным. Запрос выполняется 2 секунды, количество запросов иногда десятки в секунду. Использование индекса тут будет чертовски эффективным.


Ответы (1 шт):

Автор решения: Mike

Ответ оказался очень прост. Вместо

SELECT * FROM surv_tokens WHERE token=1111111111;

нужен запрос

SELECT * FROM surv_tokens WHERE token="1111111111";

тогда ключ используется.

→ Ссылка