Назад | Перейти на главную страницу

Запрос MySQL занимает много времени после перестроения индекса, но затем работает быстро… почему?

У меня есть простая таблица с 3M записями и простой уникальный индекс целочисленного поля. При выборе

SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10

Как и ожидалось, работает очень быстро. Когда я вставляю или удаляю запись или перезапускаю MySQL, этот же запрос занимает 10-20 секунд, а иногда и дольше.

Я предполагаю, что он загружает индекс в память - это здорово, но почему клиент должен ждать? Можно ли это исправить, чтобы запрос всегда возвращался быстро?

Большое спасибо за помощь, Андрей

Самый простой способ получить этот запрос в кеш сразу после перезапуска движка - это запустить select сразу после перезапуска движка.

Файл сценария, который перезапускает процесс MySQL, а затем немедленно регистрируется на сервере MySQL и выполняет SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10 обеспечит немедленное кэширование запроса, а это означает, что следующий запрос должен быть хорошо кэширован.