У меня есть таблица meta
со следующей структурой (это просто пример денормализованных данных)
`id` int(3) not null auto_increment primary key,
`category_id` int(3),
`subdomain` varchar(191),
`created_at` timestamp,
`updated_at` timestamp
Поле subdomain
может хранить уникальные значения, и повторяющиеся значения, такие как 'general', могут бытьповторяется много раз
Ситуация 1
Также у меня есть индекс subdomain
.Этот индекс применяется к запросу
Select `id` from `table` where `subdomain` = 'general'
Но когда я пытаюсь получить какое-то неиндексированное поле, mysql сканирует всю таблицу и индекс не используется
Select `created_at` from `table` where `subdomain` = 'general'
Как я знаю, Inno-Некластеризованный индекс БД хранит ссылку на строку, и нет необходимости выполнять линейный поиск по всем строкам для извлечения некоторого поля.
Также я знаю, что оптимизатор может выбрать неожиданный план для человека, но каковы причиныможет быть в этом случае?
Независимо от того, сколько данных в таблице, результат всегда одинаков.