Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Запрос с Group BY и количество полей группировки ...
|
|||
|---|---|---|---|
|
#18+
Вопрос следующий : теоретически как сильно влияет количество полей которые записынны после 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 с остальными таблицами ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2001, 07:38 |
|
||
|
Запрос с Group BY и количество полей группировки ...
|
|||
|---|---|---|---|
|
#18+
Теоретически чем больше столбцов в GROUP BY тем медленнее запрос. Вообще эти поля рекомендуют индексировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2001, 00:43 |
|
||
|
Запрос с Group BY и количество полей группировки ...
|
|||
|---|---|---|---|
|
#18+
Можно создать View и использовать ее в запросе вместо GROUP BY CREATE VIEW View1 AS SELECT Wear_id, SUM(Cost) as Cost FROM LWear GROUP BY Wear_id Возможно это увеличит скорость выполнения запроса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2001, 06:25 |
|
||
|
Запрос с Group BY и количество полей группировки ...
|
|||
|---|---|---|---|
|
#18+
Я всегда использовал такой способ: 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 Вместо мин'а можно любую агрегирующую функцию поставить. Какая быстрее - не исследовал. Сам не знаю, почему, но так работает быстрее. Если кто объяснит - буду рад. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2001, 08:18 |
|
||
|
Запрос с Group BY и количество полей группировки ...
|
|||
|---|---|---|---|
|
#18+
А делать 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 Сам я не пробовал, и вообще очень слаб в подзапросах и группировках .... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2001, 11:22 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32014047&tid=1825546]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 229ms |
| total: | 326ms |

| 0 / 0 |
