Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Быдло___кодер
Guest |
Есть такой запрос написаный кем-тоinsert into dest (t1, t2...) select t1, t2 from source order by id Вопрос: зачем нужен order by? Правильно ли я понимаю что это сделано для того чтобы порядок вставки строк соответствовал порядку их физического хранения в кластеризированном индексе по первичному ключу? |
11 апр 17, 12:59 [20388918] Ответить | Цитировать Сообщить модератору |
buven Member Откуда: Сообщений: 792 |
Может чтобы ID, которое IDENTITY и на dest и на source, как бы совпадало? |
||
11 апр 17, 13:02 [20388953] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
Быдло___кодер, Если есть кластерный индекс - то он как-то отсортирован уже. Хранить будет согласно тому что указано в параметрах индекса. Кластерный не всегда primary. Сортировку используют для уменьшения фрагментации индекса, если order by совпадает с порядком в индексе... как-то так На отдачу это никак не влияет |
11 апр 17, 13:04 [20388978] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
еще если бы с таблоком вставляли, то вставка в empty кластерный с order by будет минимально логироваться. но может они только половину условия помнят ----- у нас так вставляют те, кто сперва проверял, что вернул селект (им удобнее отсортированное проверять) а потом так и оставили, т.к. им все равно, они не понимают, что есть сорт для сервера |
11 апр 17, 13:26 [20389143] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
a_voronin Member Откуда: Москва Сообщений: 4807 |
Дальнейшее уточнение по данной теме. 1) Есть INSERT A SELECT ... FROM B ORDER BY C 2) В целевой таблице есть IDENTITY(1,1) , которое автоматически генерится при данной вставке Есть ли гарантия того, что полученные IDENITY будут возрастать в порядке ORDER BY C? Будут они идти последовательно или "с дырками", в моём случае несущественно? |
18 фев 19, 19:50 [21813667] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8702 |
Да |
||
18 фев 19, 19:54 [21813673] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37143 |
Об этом даже в хелпе написано:
|
||
18 фев 19, 19:54 [21813674] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4807 |
Будет аналогичное верно в отношении INSERT сделанного в рамках MERGE? |
||||
11 апр 19, 15:27 [21859607] Ответить | Цитировать Сообщить модератору |
msLex Member Откуда: Сообщений: 8702 |
а где вы в merge order by добавите? только если using (select top ... order by ... ) но это order by для правильного выбора top а не для порядка обработки записей |
||||
11 апр 19, 15:33 [21859615] Ответить | Цитировать Сообщить модератору |
TaPaK Member Откуда: Kiev Сообщений: 6801 |
пишут что с ака TOP (SELECT CAST(0x7FFFFFFFFFFFFFFF AS bigint)) будет работать, но без документов :) |
||||
11 апр 19, 15:37 [21859618] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4807 |
Именно сюда |
||
11 апр 19, 15:38 [21859620] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |