10.5.6 Оптимизация запросов InnoDB
Для настройки запросов к таблицам InnoDB, создайте соответствующий набор индексов для каждой таблицы. Подробности см. в разделе 10.3.1, «Как MySQL использует индексы». Следуйте этим рекомендациям для индексов InnoDB:
Поскольку каждая таблица
InnoDBимеет (независимо от того, запрашиваете ли вы его), укажите набор столбцов первичного ключа для каждой таблицы, столбцы, которые используются в наиболее важных и критически важных запросах.Не указывайте слишком много или слишком длинные столбцы в первичном ключе, поскольку значения этих столбцов дублируются в каждом дополнительном индексе. Когда индекс содержит ненужные данные, ввод-вывод для чтения этих данных и память для кэширования их снижают производительность и масштабируемость сервера.
Не создавайте отдельный индекс для каждого столбца, поскольку каждый запрос может использовать только один индекс. Индексы по редко используемым столбцам или столбцам с небольшим количеством различных значений могут не быть полезными для каких-либо запросов. Если у вас много запросов для одной и той же таблицы, тестируя различные комбинации столбцов, старайтесь создавать небольшое количество индексов, а не большое количество индексов по одному столбцу. Если индекс содержит все столбцы, необходимые для набора результатов (известный как составной индекс), запрос, возможно, сможет вообще избежать чтения данных из таблицы.
Если индексируемый столбец не может содержать каких-либо
NULLзначений, объявите его какNOT NULLпри создании таблицы. Оптимизатор может лучше определить, какой индекс наиболее эффективен для запроса, когда он знает, содержит ли каждый столбецNULLзначения.Вы можете оптимизировать транзакции отдельных запросов для таблиц
InnoDB, используя технику, описанную в разделе 10.5.3, «Оптимизация транзакций только для чтения InnoDB».
© 2025 Oracle
Licensed under the GPLv2 License.