MySQL: сложный запрос медленнее на удаленном клиенте, чем на локальном клиенте? - PullRequest
2 голосов
/ 23 августа 2011

Мне интересно, если сложный запрос (несколько LEFT JOIN, некоторые sub-SELECT и некоторые GROUP BY) (намного) медленнее, когда он выполняется на удаленном клиенте, чем на локальном клиенте.

Я всегда думал, что запрос был полностью выполнен на сервере, и что только отправка результатов медленнее в глобальной сети, чем в локальной сети.

Но некоторые запросы, которые выполняются почти мгновенно локально, кажутся вечными в удаленном клиенте. Я использую Navicat и получаю доступ к удаленному серверу через обычное интернет-соединение (20 Мбит вниз, 1 Мбит вверх).

Возможно, между клиентом и сервером все еще происходит какое-то взаимодействие, пока выполняется запрос? Может быть, какое-то кеширование, которое намного быстрее локально, чем удаленное ?! (думал, что кеширование тоже происходило на сервере ...)

UPDATE: только что выполнил очень большой тест для таблицы с 500 000 записей с несколькими подзапросами и группами (запрос занял 700 секунд), используя команду SELECT COUNT для сложного запроса и с SQL_NO_CACHE, и для этого потребовалось ровно столько же времени, сколько и для локального ... думаю, это была просто медленная передача данных ...

1 Ответ

3 голосов
/ 23 августа 2011

Нет. Только количество переданных данных и количество запросов будут иметь значение.

Возможно, существует некоторая мета-связь, которую использует Navicat - возможно, она выполняет несколько небольших запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...