Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос с Group BY и количество полей группировки ... / 5 сообщений из 5, страница 1 из 1
12.09.2001, 07:38
    #32013889
DennisL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с Group BY и количество полей группировки ...
Вопрос следующий : теоретически как сильно влияет количество полей которые записынны после GROUP BY если они все имеют одинаковое значение (полученны в результыте JOIN с другой таблицей )
пример :

SELECT w.Wear_id, SUM(w.Cost)as Cost, o.SSum, o.ESum, o.Curr, o.SDate,
o.EDate, o.ObjCode, o.InvNum, a.AgrNum, s.Descr AS InvStatus,
a.CarRegNum, a.ChassisNum, ot.Descr as ObjType,

FROM LWear w INNER JOIN
LWearObj o ON w.Wear_id=o.Wear_id INNER JOIN
LAgreements a ON o.Lagr_id=a.Lagr_id INNER JOIN
LAgrStatus s ON a.Status = s.Status LEFT OUTER JOIN
LAccObjType ot ON o.ObjCode=ot.Type


GROUP BY w.Wear_id, o.SSum, o.ESum, o.Curr, o.SDate,
o.EDate, o.ObjCode, o.InvNum, a.AgrNum, s.Descr,
a.CarRegNum, a.ChassisNum, ot.Descr

По сути для каждого w.Wear_id все остальные поля перечисленные в GROUP BY одинаковые ... (но
насколько я понимаю их все обязательно указывать) не замедлит ли это выполенение запросы т.к. SQL Server будет просматривать занчения каждого из полей и проводить групировку для каждого ...

Может для получения таких запросов используют другой метод ? провести группировку и потом уже проводить JOIN с остальными таблицами ?
...
Рейтинг: 0 / 0
14.09.2001, 00:43
    #32014033
Slava
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с Group BY и количество полей группировки ...
Теоретически чем больше столбцов в GROUP BY тем медленнее запрос. Вообще эти поля рекомендуют индексировать.
...
Рейтинг: 0 / 0
14.09.2001, 06:25
    #32014047
Pandre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с Group BY и количество полей группировки ...
Можно создать View и использовать ее в запросе вместо GROUP BY

CREATE VIEW View1 AS
SELECT Wear_id, SUM(Cost) as Cost
FROM LWear
GROUP BY Wear_id

Возможно это увеличит скорость выполнения запроса
...
Рейтинг: 0 / 0
14.09.2001, 08:18
    #32014050
Запрос с Group BY и количество полей группировки ...
Я всегда использовал такой способ:

SELECT w.Wear_id, SUM(w.Cost)as Cost,
min(o.SSum) as SSum, min(o.ESum) as ESum, min(o.Curr) as Curr, min(o.SDate) as SDate,
min(o.EDate) as EDate, min(o.ObjCode) as ObjCode, min(o.InvNum) as InvNum,
min(a.AgrNum) as AgrNum, min(s.Descr) AS InvStatus, min(a.CarRegNum) as CarRegNum,
min(a.ChassisNum) as ChassisNum, min(ot.Descr) as ObjType

FROM LWear w INNER JOIN
LWearObj o ON w.Wear_id=o.Wear_id INNER JOIN
LAgreements a ON o.Lagr_id=a.Lagr_id INNER JOIN
LAgrStatus s ON a.Status = s.Status LEFT OUTER JOIN
LAccObjType ot ON o.ObjCode=ot.Type

GROUP BY w.Wear_id

Вместо мин'а можно любую агрегирующую функцию поставить. Какая быстрее - не исследовал.

Сам не знаю, почему, но так работает быстрее.
Если кто объяснит - буду рад.
Заранее спасибо.
...
Рейтинг: 0 / 0
14.09.2001, 11:22
    #32014081
DennisL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос с Group BY и количество полей группировки ...
А делать JOIN после группировки возможно ?
пример :

SELECT sbq.Wear_id, sbq.Cost, o.SSum, o.ESum, o.Curr, o.SDate,
o.EDate, o.ObjCode, o.InvNum, a.AgrNum, s.Descr AS InvStatus,
a.CarRegNum, a.ChassisNum, ot.Descr as ObjType
FROM
(SELECT Wear_id, SUM(Cost)as Cost,
FROM LWear
WHERE ...
GROUP BY Wear_id) sbq INNER JOIN

LWearObj o ON sbq.Wear_id=o.Wear_id INNER JOIN
LAgreements a ON o.Lagr_id=a.Lagr_id INNER JOIN
LAgrStatus s ON a.Status = s.Status LEFT OUTER JOIN
LAccObjType ot ON o.ObjCode=ot.Type

Сам я не пробовал,
и вообще очень слаб в подзапросах и группировках ....
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запрос с Group BY и количество полей группировки ... / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]