powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / insert as select order by
11 сообщений из 11, страница 1 из 1
insert as select order by
    #39436444
Есть такой запрос написаный кем-то
Код: sql
1.
2.
insert into dest (t1, t2...)
select t1, t2 from source order by id



Вопрос: зачем нужен order by?
Правильно ли я понимаю что это сделано для того чтобы порядок вставки строк соответствовал порядку их физического хранения в кластеризированном индексе по первичному ключу?
...
Рейтинг: 0 / 0
insert as select order by
    #39436451
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быдло___кодерЕсть такой запрос написаный кем-то
Код: sql
1.
2.
insert into dest (t1, t2...)
select t1, t2 from source order by id



Вопрос: зачем нужен order by?
Правильно ли я понимаю что это сделано для того чтобы порядок вставки строк соответствовал порядку их физического хранения в кластеризированном индексе по первичному ключу?

Может чтобы ID, которое IDENTITY и на dest и на source, как бы совпадало?
...
Рейтинг: 0 / 0
insert as select order by
    #39436453
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Быдло___кодер,

Если есть кластерный индекс - то он как-то отсортирован уже. Хранить будет согласно тому что указано в параметрах индекса.
Кластерный не всегда primary.
Сортировку используют для уменьшения фрагментации индекса, если order by совпадает с порядком в индексе... как-то так

На отдачу это никак не влияет
...
Рейтинг: 0 / 0
insert as select order by
    #39436479
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
еще если бы с таблоком вставляли,
то вставка в empty кластерный с order by будет минимально логироваться.
но может они только половину условия помнят
-----
у нас так вставляют те, кто сперва проверял,
что вернул селект (им удобнее отсортированное проверять)
а потом так и оставили, т.к. им все равно, они не понимают, что есть сорт для сервера
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
insert as select order by
    #39775887
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дальнейшее уточнение по данной теме.

1) Есть INSERT A SELECT ... FROM B ORDER BY C
2) В целевой таблице есть IDENTITY(1,1) , которое автоматически генерится при данной вставке

Есть ли гарантия того, что полученные IDENITY будут возрастать в порядке ORDER BY C?

Будут они идти последовательно или "с дырками", в моём случае несущественно?
...
Рейтинг: 0 / 0
insert as select order by
    #39775890
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninЕсть ли гарантия того, что полученные IDENITY будут возрастать в порядке ORDER BY C?
Да
...
Рейтинг: 0 / 0
insert as select order by
    #39775891
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Об этом даже в хелпе написано:

https://docs.microsoft.com/ru-ru/sql/t-sql/statements/insert-transact-sql?view=sql-server-2017 INSERT queries that use SELECT with ORDER BY to populate rows guarantees how identity values are computed but not the order in which the rows are inserted.
...
Рейтинг: 0 / 0
insert as select order by
    #39799998
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гавриленко Сергей АлексеевичОб этом даже в хелпе написано:

https://docs.microsoft.com/ru-ru/sql/t-sql/statements/insert-transact-sql?view=sql-server-2017 INSERT queries that use SELECT with ORDER BY to populate rows guarantees how identity values are computed but not the order in which the rows are inserted.

Будет аналогичное верно в отношении INSERT сделанного в рамках MERGE?
...
Рейтинг: 0 / 0
insert as select order by
    #39800005
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninГавриленко Сергей АлексеевичОб этом даже в хелпе написано:

пропущено...


Будет аналогичное верно в отношении INSERT сделанного в рамках MERGE?
а где вы в merge order by добавите?

только если
using (select top ... order by ... )

но это order by для правильного выбора top а не для порядка обработки записей
...
Рейтинг: 0 / 0
insert as select order by
    #39800008
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a_voroninГавриленко Сергей АлексеевичОб этом даже в хелпе написано:

пропущено...


Будет аналогичное верно в отношении INSERT сделанного в рамках MERGE?
пишут что с ака TOP (SELECT CAST(0x7FFFFFFFFFFFFFFF AS bigint)) будет работать, но без документов :)
...
Рейтинг: 0 / 0
insert as select order by
    #39800010
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
msLexтолько если
using (select top ... order by ... )


Именно сюда
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / insert as select order by
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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