Низкая скорость SQL-запросов - PullRequest
2 голосов
/ 20 ноября 2011

У меня есть запрос (ниже), который выполняется вечно, когда у клиента много категорий.Мне нужно как-то ускорить это, и я не могу понять, как.Любая помощь очень ценится.

 SELECT pictures1.*, GROUP_CONCAT(cats_master.categoryName SEPARATOR ';') AS categoryNames
            FROM pictures1
                LEFT JOIN cats_contacts ON pictures1.id =cats_contacts.contact_id
                LEFT JOIN cats_master ON cats_contacts.category_id = cats_master.id
            WHERE pictures1.customer_id = (customer id goes here)
            GROUP BY pictures1.id
            ORDER BY pictures1.l_name ASC

Результатом этого запроса является файл, который клиент может загрузить - проблема, похоже, относится к категории.

Ответы [ 3 ]

3 голосов
/ 20 ноября 2011

Проверьте план объяснения и при необходимости добавьте индексы.

1 голос
/ 20 ноября 2011

Наличие следующих индексов значительно ускорит запрос:

id, l_name, customer_id: pictures table
contact_id: cats_contacts table
id, category_id: cats_master table
0 голосов
/ 20 ноября 2011

Я бы попробовал индекс для всех идентификаторов, + l_name для окончательной сортировки. После этого самое тяжелое время. Например, все ваши идентификаторы 'join' имеют одинаковый тип и размер.

PS Что говорит план запроса.

и внешний шанс перестроить индексы, посмотреть, если это изменит.

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