Мне интересно, если сложный запрос (несколько LEFT JOIN, некоторые sub-SELECT и некоторые GROUP BY) (намного) медленнее, когда он выполняется на удаленном клиенте, чем на локальном клиенте.
Я всегда думал, что запрос был полностью выполнен на сервере, и что только отправка результатов медленнее в глобальной сети, чем в локальной сети.
Но некоторые запросы, которые выполняются почти мгновенно локально, кажутся вечными в удаленном клиенте. Я использую Navicat и получаю доступ к удаленному серверу через обычное интернет-соединение (20 Мбит вниз, 1 Мбит вверх).
Возможно, между клиентом и сервером все еще происходит какое-то взаимодействие, пока выполняется запрос? Может быть, какое-то кеширование, которое намного быстрее локально, чем удаленное ?! (думал, что кеширование тоже происходило на сервере ...)
UPDATE:
только что выполнил очень большой тест для таблицы с 500 000 записей с несколькими подзапросами и группами (запрос занял 700 секунд), используя команду SELECT COUNT для сложного запроса и с SQL_NO_CACHE, и для этого потребовалось ровно столько же времени, сколько и для локального ... думаю, это была просто медленная передача данных ...