Задать вопрос
fast-je
@fast-je
Пишу на php.

Как заставить работать индекс при запросе?

Всем привет!
Есть таблица в которой есть поле date и там INT и оно index.
Но при EXPLAIN показывает что index не используется.
Я подумал, ну наверное проблема с типами и сделал convert to SIGNED UNIX_TIMESTAMP(), но что-то не особо помогает, что-то делают я не так.

5e6c054963695311726749.png

Еще у меня было так
SELECT * FROM `still_youtube_ads_user` WHERE `date`+12313123 < CONVERT(UNIX_TIMESTAMP(), SIGNED)


Не уверен что с + будет работать.
Как заставить работать индекс ?
  • Вопрос задан
  • 302 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
fast-je
@fast-je Автор вопроса
Пишу на php.
Rsa97, Спасибо за ответ, вы очень помогли.

Ответ.
Разница в том, что по полю `date` индекс у вас есть, а по выражению `date`+23328000 индекса нет и быть не может.

Чаще всего MySQL не ошибается.
В вашем случае ожидается, что под условие `date` < CONVERT(UNIX_TIMESTAMP(), SIGNED) попадёт 50% строк, а значит проще перебрать все строки, чем читать в одном месте индекс, в другом строки, на которые он ссылается.

Индекс работает когда:
1. В левой части условия находится чистое поле, а не выражение или функция от поля.
2. Есть подходящий индекс. Если условий несколько, то может использоваться составной индекс, имеющий подходящий префикс.
3. MySQL считает, что использование индекса затратит меньше ресурсов, чем прямое сканирование.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
https://dev.mysql.com/doc/refman/8.0/en/index-hint...
В вашел случае это не поможет так как выборка не маленькая указывайте меньшими ренжами , ни кто в здравом уме не выбирает пол милиона записей

mysql в вашем запросе выборку с индексом прировнял к полному сканированию таблицы
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
xRocket Москва
от 3 000 до 4 000 $
div. Ставрополь
от 50 000 до 120 000 ₽
Lachestry Таганрог
от 170 000 до 200 000 ₽
13 дек. 2024, в 09:23
20000 руб./за проект
13 дек. 2024, в 09:12
1 руб./за проект
13 дек. 2024, в 08:51
300000 руб./за проект