У меня есть простая таблица с 3M записями и простой уникальный индекс целочисленного поля. При выборе
SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10
Как и ожидалось, работает очень быстро. Когда я вставляю или удаляю запись или перезапускаю MySQL, этот же запрос занимает 10-20 секунд, а иногда и дольше.
Я предполагаю, что он загружает индекс в память - это здорово, но почему клиент должен ждать? Можно ли это исправить, чтобы запрос всегда возвращался быстро?
Большое спасибо за помощь, Андрей
Самый простой способ получить этот запрос в кеш сразу после перезапуска движка - это запустить select сразу после перезапуска движка.
Файл сценария, который перезапускает процесс MySQL, а затем немедленно регистрируется на сервере MySQL и выполняет SELECT * FROM ThisTable ORDER BY ThatField LIMIT 10
обеспечит немедленное кэширование запроса, а это означает, что следующий запрос должен быть хорошо кэширован.