Сопоставьте равенство, диапазон и сортировку с порядком полей индекса
Зачем
Зачем это нужно
Сравните фильтр по исходному столбцу и выражению над ним
Учтите стоимость записи и размер нового индекса до его добавления
Вопросы
Частые вопросы
Как запросить разбор составного индекса MySQL?
Для MySQL 8 разбери таблицу events(id BIGINT PRIMARY KEY, user_id BIGINT, created_at DATETIME) и запрос по user_id=7 за полуоткрытый период с сортировкой created_at,id. Обсуди индекс (user_id,created_at,id), левый префикс и почему DATE(created_at) в фильтре требует отдельной оценки. Дай небольшой набор строк, ожидаемый отбор и план сравнения EXPLAIN. Не обещай ускорения и не выполняй SQL.
Что прислать для объяснения EXPLAIN MySQL?
Укажите версию сервера, движок, SHOW CREATE TABLE, запрос, индексы и имеющийся план без секретов. Сначала проверьте правильность отбора, затем сравнивайте планы и измерения в тестовой среде. Не меняйте сразу несколько индексов.
Какие строки проверить для диапазона дат?
Задайте user_id=7 и период от 1 сентября включительно до 1 октября исключительно. Строки в начале и внутри периода должны попасть, запись ровно 1 октября и запись другого пользователя — нет. При одинаковом created_at проверьте вторичную сортировку по id.
Всегда ли левый префикс гарантирует использование индекса?
Нет, оптимизатор учитывает статистику, объём выборки и стоимость доступа. У InnoDB вторичные индексы также связаны с первичным ключом, что влияет на оценку избыточности. Совет по одному тексту запроса остаётся гипотезой до сравнения планов.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.