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



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



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

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

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

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

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

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

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

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
11.04.2019, 15:27
    #39799998
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert as select order by
Гавриленко Сергей АлексеевичОб этом даже в хелпе написано:

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
11.04.2019, 15:33
    #39800005
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
insert as select order by
a_voroninГавриленко Сергей АлексеевичОб этом даже в хелпе написано:

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


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

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

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

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


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


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


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