SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 05.05.2011 18:38:07

Виталий_39
Участник
Зарегистрирован: 05.05.2011
Сообщений: 2

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

Запрос такого вида:
SELECT s.price,s.image,h.name,h.brand FROM t1 s LEFT JOIN t2 h ON (h.id=s.iditem) WHERE  s.val=1 GROUP BY s.iditem ORDER BY s.iditem ASC LIMIT 30
В таблице t1 значение iditem повторяется множество раз.
Проблема в следующем, в таблице стало много записей и из за GROUP BY время запроса сталo очень большим.
Базе приходится сначала сгруппировать все значение iditem в t1  для того чтоб получить 30 уникальных.
Как изменить запрос, чтобы уменьшить нагрузку на БД и ускорить время обработки?

Отредактированно Виталий_39 (05.05.2011 18:56:51)

Неактивен

 

#2 07.05.2011 01:39:08

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Трудности в оптимизации запроса по выборке данных с двух таблиц.

А ключики t1(val, iditem) и t2(id) есть?

Кстати, ORDER BY можно такой не писать — группировка всегда подразуме-
вает неявную сортировку по своим столбцам.

Неактивен

 

#3 07.05.2011 03:06:46

Виталий_39
Участник
Зарегистрирован: 05.05.2011
Сообщений: 2

Re: Трудности в оптимизации запроса по выборке данных с двух таблиц.

val только в t1(условие может изменятся например по val=2), ключи в t1(iditem) соответствуют t2(id).

В таблице t2 только одна строка совпадающая по ключу.
Если группирую только t1 без  LEFT JOIN  всё ок, стоит только присоединить таблицу t2 время запроса в 8 раз увеличивается.

Решение кроме как объединение таблиц пока не пришло в голову.

Отредактированно Виталий_39 (07.05.2011 09:06:30)

Неактивен

 

#4 12.05.2011 21:36:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Трудности в оптимизации запроса по выборке данных с двух таблиц.

Я так и не понял, есть ли индексы, которые я написал smile
и EXPLAIN от запроса покажите, пожалуйста.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson