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 может читать таблицу или покрывающий индекс.

Выберите один вариант
Без регистрации · результат не сохраняется

Связанные задачи