Разработчик добавляет индекс, ждёт ускорения — а EXPLAIN как ни в чём не бывало показывает Seq Scan (в MySQL — type: ALL) по многомиллионной таблице. Первая мысль обычно «база сломалась» или «индекс не подхватился». В большей части таких случаев планировщик в порядке: он честно посчитал, что читать индекс дороже, чем прочитать таблицу целиком. Разберёмся, где проходит граница между «индекс ещё выгоден» и «индекс уже мешает», и что с этим делать.
Подробнее →