Короткий ответ: Нет.
Длинный ответ:
Насколько программа может сказать, индексы, UNIQUE
или нет, обновляются "немедленно".
На INSERT
все уникальные ключи должны быть проверены на наличие «дубликата ключа» до того, как INSERT
завершится (или не получится из-за дублирования ключа). Неуникальные обновления ключа помещаются в «буфер изменений» для возможной записи на диск. Однако любое использование индекса также проверяет наличие в буфере изменений, поэтому вы фактически не замечаете существование буфера изменений.
Если вопрос касается изменения плана EXPLAIN
с течением времени, то есть отчет об ошибке, кажется, говорит, это другое дело. Вы должны перефразировать свой Вопрос с учетом этого.
Воссоздание индекса - тяжелая операция. В следующий раз сделайте ANALYZE TABLE
. Это обновляет статистику для всех индексов в таблице. Вот что вы можете испытать:
- Запрос прекрасно использует индекс.
- Вы добавляете много новых строк, что делает статистику не совсем правильной больше.
- Поскольку каждый запрос самостоятельно решает, какой индекс использовать, или даже использовать какой-либо индекс, ваш запрос может «внезапно» выбрать использование индекса, который ранее не использовался, или наоборот.
ANALYZE TABLE
активно обновляет статистику. - Теперь ваш запрос может go вернуться к предыдущему способу использования (или нет) нужного индекса.
Было бы лучше поговорить о конкретном c запросе и его SHOW CREATE TABLE
. Мы можем предпринять некоторые действия, чтобы ускорить запрос и / или предотвратить возникшую у меня проблему.