Задать вопрос

Что делать если Sending Data занимает 99% времени запроса?

Сабж в теме, выбираю 800 строк из БД, сами строки не очень объёмные - числа и слова.
Запрос выполняется 24-44 секунды.
SELECT `group_id`,`members`,`domain` 
  FROM `table` 
  WHERE `members` > 1000 AND `ya_date` IS NULL LIMIT 800;

Уменьшение количества выбираемых строк ничего не даёт, выбор 10 строк тоже выполняется 21 секунду:
LIMIT 10;
Индекс есть составной на members+ya_date он используется.

7iDaHQKojUY.jpg

Результат EXPLAIN
3f095311f9484353ab795b6f00968368.png
  • Вопрос задан
  • 2623 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
IS NULL неиндексируемый запрос, вся проблема в нем. По этому время работы выборки будет одинаковым для любого количества строк, т.к. перебор идет "в лоб", и до конца таблицы. Думайте как обойти, в идеале заменить на индексируемое поле, например int.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Это возврат ответа от MySQL-сервера HTTP-серверу (PHP и т.п.), MySQL и HTTP-сервер расположены на одном хосте или разных?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы