SQLite substr в WHERE: почему индекс даёт SCAN
На столбце даты есть обычный индекс, но условие применяет к значению функцию. Сопоставьте выражение поиска с ключом индекса и планом выполнения.
Выберите ответ и проверьте себя. Продолжить тему можно в курсе Продвинутый SQL: сложные запросы и задачи для собеседований.
На events(event_id INTEGER PRIMARY KEY,occurred_at TEXT) создан обычный индекс(occurred_at). Для SELECT event_id FROM events WHERE substr(occurred_at,1,7)='2024-05' зафиксирован SCAN. Почему этот предикат не задаёт обычный диапазонный SEARCH по исходному occurred_at? SCAN может читать таблицу или покрывающий индекс.
Без регистрации · результат не сохраняется
Связанные задачи
- SQL: Переписывание условий и проверка эквивалентности — Ноябрьский отчёт с паузами клиентов
- SELF JOIN: сколько пар получится при соединении таблицы с собой
- INTERSECT в SQL: сколько строк останется после пересечения
- SQL: Агрегация, оконные вычисления и фильтрация — Категории-лидеры и доля в продажах
- SQL: SELF JOIN и поиск уникальных пар — Пары с несколькими общими проектами
- SQL EXISTS: размножит ли запрос строки клиента
