Mysql запрос быстро только при первом запуске - PullRequest
0 голосов
/ 11 декабря 2011

У меня есть запрос mysql SELECT, который выполняется быстро (<0,1 секунды), но только при первом запуске.Он объединяет 3 таблицы (используя индексы) и имеет относительно простой оператор WHERE.Когда я запускаю его вручную в phpmyadmin (всегда меняя числа в WHERE, чтобы он не кэшировался), это всегда быстро, но когда у меня есть php, я запускаю несколько его копий подряд, первая - быстрая, а остальныеповесить на ~ 400 сек.Мое единственное предположение состоит в том, что MySQL почему-то не хватает памяти для подключения, а затем приходится делать дорогой пейджинг.</p>

Мой общий вопрос: как я могу исправить это поведение, но мои конкретные вопросы не включают в себя фактическое закрытие и перезапуск соединения, как я могу сделать так, чтобы эти запросы, поступающие с php, рассматривались как отдельные, как запросы, поступающие с phpmyadmin,Как я могу сказать MySQL очистить любую память, когда запрос сделан, и это звучит как проблема памяти для вас?

1 Ответ

0 голосов
/ 11 декабря 2011

Ну, я нашел ответ, по крайней мере, в моем случае, и я помещаю его здесь для любого в будущем, кто сталкивается с подобной проблемой.На запрос, который я выполнял, было возвращено много результатов, и кэш запросов MYSQL вызывал много накладных расходов.При запуске запроса MYSQL сохранит его и его вывод, чтобы он мог быстро отвечать на будущие идентичные запросы.Все, что мне нужно было сделать, это поставить SQL_NO_CACHE, и скорость вернулась к норме.Просто посмотрите, велик ли ваш входящий запрос или результаты очень велики, потому что MYSQL может потребоваться немало ресурсов, чтобы решить, когда что-то делать.

...