Имя: Пароль:
1C
 
MS SQL: группировка отсортированной таблицы
0 extrim-style
 
20.10.15
10:54
Имеется отсортированная таблица. Делаю левое соединение к ней и группировку. Вопрос: нужно ли делать повторную сортировку или сохранится первоначальная?
1 Мутабор
 
20.10.15
10:55
Сортировку на выходе делают, в промежутке смысла нет...
2 KuAl
 
20.10.15
10:56
https://msdn.microsoft.com/ru-ru/library/ms189499(v=sql.120).aspx

Логический порядок обработки Select

FROM
ON
JOIN
where
GROUP BY
WITH CUBE или WITH ROLLUP
HAVING
SELECT
DISTINCT
ORDER BY
TOP
3 extrim-style
 
20.10.15
10:58
(2) И? Я в курсе. Если не было повторного ORDER BY какая будет сортировка в итоговой таблице?
4 Мутабор
 
20.10.15
11:00
(3) Запрос какой? К отсортированной таблице (вьюшке), тогда нет.
5 Лефмихалыч
 
20.10.15
11:01
(3) нет гарантии, что такая же, как была
6 KuAl
 
20.10.15
11:01
таблица будет неотсортирована (если общие варианты рассматривать)
7 Мутабор
 
20.10.15
11:02
+4 неотсортированная будет всмысле. А то по тексту непонятно звучит :)
8 extrim-style
 
20.10.15
11:03
(4)(5)(6) спс. А есть где об этом почитать?
9 Мутабор
 
20.10.15
11:05
(8) скуль сам все оптимизирует под себя для максимального ускорения и если нет указаний ты не поймешь что получишь в сортировке.
10 Гёдза
 
20.10.15
11:13
если делаешь группировку по сортированному полю, то сохранится
11 Гёдза
 
20.10.15
11:14
по хорошему нужно конечно указать сортировку еще раз. но  к счастью сортировка уже сортированной будет очень быстра
12 Маратыч
 
20.10.15
11:15
(10) Разве? Вроде как при группировки скуль формирует временную таблицу, основываясь на индексах, ее агрегирует и выдает юзеру. А индекс какбе может сортировке вообще не соответствовать.

Хотя могу ошибаться, конечно, проще взять и проверить.
13 extrim-style
 
20.10.15
11:15
(10) мнения разделились. Где истина?
14 extrim-style
 
20.10.15
11:17
+(13) сорри. Да, делаю группировку именно по отсортированному полю.
15 Маратыч
 
20.10.15
11:17
(14) А поле индексированное?
16 extrim-style
 
20.10.15
11:23
(14) ошибся. Вобщем я делаю сортировку по Поле1. Потом левое соединение, группировку по Поле2, выбирая Макс(Поле1).
(15) да
17 mistеr
 
20.10.15
11:27
(10) Нет.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.