Spec-Zone.ru › MySQL 8.4

10.2.1.23 Избегание полных сканирований таблиц

Вывод из EXPLAIN показывает ALL в столбце type, когда MySQL использует полное сканирование таблицы для решения запроса. Это обычно происходит в следующих условиях:

  • Таблица настолько мала, что полное сканирование таблицы быстрее, чем поиск по ключу. Это характерно для таблиц с менее чем 10 строками и короткими строками.

  • В предложении ON или WHERE нет полезных ограничений для индексированных столбцов.

  • Вы сравниваете индексированные столбцы со значениями констант, и MySQL рассчитал (на основе дерева индекса), что константы охватывают слишком большую часть таблицы, и полное сканирование будет быстрее. См. Раздел 10.2.1.1, «Оптимизация предложения WHERE».

  • Вы используете ключ с низкой кардинальностью (много строк соответствует значению ключа) через другой столбец. В этом случае MySQL предполагает, что использование ключа, вероятно, потребует многих поисков по ключу, и полное сканирование будет быстрее.

Для небольших таблиц полное сканирование часто подходит, и влияние на производительность незначительно. Для больших таблиц попробуйте следующие методы, чтобы избежать неправильного выбора оптимизатором полного сканирования таблицы:

  • Используйте ANALYZE TABLE tbl_name для обновления распределения ключей для сканируемой таблицы. См. Раздел 15.7.3.1, «Оператор ANALYZE TABLE».

  • Используйте FORCE INDEX для сканируемой таблицы, чтобы сказать MySQL, что полное сканирование очень дорого по сравнению с использованием указанного индекса:

    SELECT * FROM t1, t2 FORCE INDEX (index_for_column)
      WHERE t1.col_name=t2.col_name;
    

    См. Раздел 10.9.4, «Подсказки индекса».

  • Запустите mysqld с опцией --max-seeks-for-key=1000 или используйте SET max_seeks_for_key=1000, чтобы сказать оптимизатору, что ни один поиск по ключу не вызывает более 1000 поисков по ключу. См. Раздел 7.1.8, «Переменные системы сервера».

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/table-scan-avoidance.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API