powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рушится вера в
10 сообщений из 35, страница 2 из 2
Рушится вера в
    #32047424
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dankov
на: Вы считаете, что после запроса "insert ...select..order" данные расположаться именно в том порядке, в каком определено в этом запросе. На самом деле это не так.

Я и сам вижу в своей рабочей процедуре, что это "не так" - потому и самый первый вопрос адресовал тем, кто уже сталкивался с подобными проявлениями работы сервера... (а вовсе не - "теоретикам от SQL").
Ну не доводилось мне до сих пор наблюдать такого "поведения" - что в этом плохого? Или это повод - считать меня тупым?

на: Вы считаете, что при указании select без order, данные будут считаны в выборку в порядке физического хранения. Это тоже неверная предпосылка.

Это я так уж - в пылу полемики "упростил до невозможности", и конечно же - был неправ... (на самом деле - помню я все топики на этом форуме, где обсуждались подобные вещи, и где всеобщим согласием договорились, что типа: "... верить можно только - кластерному индексу, да и то - с оглядкой...").

на: ... Позвольте уж серверу в силу соображений performance считать страницы несколькими потоками...

Вот здесь уже можно - поспорить с вами, т.к. внутреннего кода MS-SQL-сервера не видели - ни вы, ни я... А читать что-либо "несколькими потоками" - это тоже тратить performance на переключение и синхронизацию между этими потоками, да плюс еще - на "сборку" результата... неувязочка тут - проще будет - в одном потоке, "в лоб", перебором, скажем, кластерного индекса (за неимением лучшего критерия).

на: ... по-моему вы придираетесь к sql-серверу необосновано...

Вот уж чего не хотел, начиная эту "бодягу", так это - "придираться" к инструменту, который меня "кормит", почитай, уже 8 лет... :-)).
Понять хочу - это правда... (к сожалению - не всегда удается, даже с помощью этого замечательного ресурса).
...
Рейтинг: 0 / 0
Рушится вера в
    #32047427
Сат
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Tulkin
а истина то в чем? в том что все ВИДЕЛИ и ЧИТАЛИ миллионы раз про суть SQL, но конкретный пример не могут привести?
...
Рейтинг: 0 / 0
Рушится вера в
    #32047434
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Tulkin

Слышь, чувак!
Лихо у тебя недели мелькают (с 30-го августа по 2-е сентября - уже одна пролетела).
Давай не будем скатываться на грубости, беру свои слова про "не нормальных" - обратно, в отношении всех присутствующих...

Тебе же лично предлагаю на спор ("на слабо") - за ящик пива - через неделю представить здесь в этом топике код на T-SQL, который после дописывания в него 4-х строчек:
Код: plaintext
1.
2.
3.
4.
select * from SomeTable 
go 
select * from SomeTable 
go 

... вернет 2 набора данных с различными порядками сортировки.

Если сделаешь - на этом и помиримся... а у меня брат родной в Киеве живет - он тебе пиво проставит под мои личные гарантии...
(а если не сделаешь - мне будет достаточно сознания, что я пока - прав).
...
Рейтинг: 0 / 0
Рушится вера в
    #32047437
Владимир Смирнов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы проверить порядок вставки записей в таблицу #t1 можно добавить в структуру таблицы поле identity, а при выборке посмотреть по этому полю, в каком-же порядке на самом деле вставлялись записи.
...
Рейтинг: 0 / 0
Рушится вера в
    #32047443
Alexandr Kizchenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 qu-qu
на:
наверное думаете, что я - ничего про это вообще ни разу не слышал

создается такое впечатление...

хотелось бы узнать почему вы решили что команда insert into #t2 select * from #t1 order by f1,f0 будет физически располагать на диске записи в той последовательности, в какой они выбираются из t1 ? К этому его никто не обязывает.
...
Рейтинг: 0 / 0
Рушится вера в
    #32047454
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alexandr Kizchenko
на: хотелось бы узнать почему вы решили что команда insert into #t2 select * from #t1 order by f1,f0 будет физически располагать на диске записи в той последовательности, в какой они выбираются из t1 ?

Так в самом же первом посте - пример приведен (лень код читать, что ли?).

Там даже 3 раза специально сделан insert - без сортировки, и с сортировкой по различным полям... и результаты 4-х селектов - приведены... (исходная таблица + 3 целевых).
У вас что - другие результаты получаются? (так приводите их сюда - пиво "срубите" на халяву).
Или вы - в книжках читаете - что "должно" получиться? (так в книжках - пиво и пейте).

2 Tulkin
Кстати, насчет пива - тут братец попросил уточнение сделать:
токмо я тебя прошу - не обещай ему гор золотых - хайнекеном отдаваться не буду :)) а ящичек оболоньки, или чего-то отечественного проставлю(если выгорит) - заодно может и "сходняк" устроим :))
...
Рейтинг: 0 / 0
Рушится вера в
    #32047475
Tulkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 qu-qu
Пиво это конечно хорошо, но задачу ты видоизменил.
Сложно представить себе случай, когда
Код: plaintext
1.
2.
3.
4.
5.
[/src]
select * from SomeTable 
go 
select * from SomeTable 
go
[src]

вернет разные последовательности данных, если конечно в другом процессе никто не изменял содержимое таблицы. Суть ведь, насколко я понял не в том, что два последовательных селекта могут выдать разную сортировку, а в том, что совсем не обязательно селекту доставать из таблички данные в том порядке, в каком их туда запихнули. Так вот,подумай еще раз про условия задачи, а потом уже пиво раздавай.
...
Рейтинг: 0 / 0
Рушится вера в
    #32047500
AlexP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to qu-qu

Цитата из BOL:

ORDER BY is important because relational theory specifies that the rows in a result set cannot be assumed to have any sequence unless ORDER BY is specified. ORDER BY must be used in any SELECT statement for which the order of the result set rows is important.


Видать, и в MS теоретики пролезли.

Черным по белому: если поставить ORDER BY, порядок гарантирован. Если не поставить ORDER BY, порядок не гарантирован. Какие тут могуть быть вопросы? 1000000 раз проверил, было одинаково, так и всегда будет одинаково? Да в MS кто-нибудь чихнет, и ты после очередного SP получишь другой порядок. У тебя работает, но этого никто не обещал. Ну, вольному - воля.
...
Рейтинг: 0 / 0
Рушится вера в
    #32047508
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юконе, ты, Боже ж мой!!!

Меня уже цитатками из BOL - глушить начали... :-)).
Не, пора закрывать этот топик нафик - от пива уже отказались... за дурака меня - по-прежнему считают... (хотя, просил же как человеков - "не считайте меня за дурака").

Спасибо всем - за внимание... до встречи - в эфире (в других топиках).
...
Рейтинг: 0 / 0
Рушится вера в
    #32047584
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте так


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
set nocount on
create table #t1 (id int)
create table #t2 (id int)
declare	@id int
select	@id =  1 
while @id <  10  begin
	insert into #t1(id) values(@id)
	if @id /  2  *  2  = @id insert into #t2(id) values(@id)
	select	@id = @id +  1 
end

 /*вариант 1*/ 
select  top  10  * 
from	#t1 A left join #t2 B on A.ID = B.ID
where	B.ID is null
option (loop join,force order)

 /*вариант 2*/ 
select top  10  * 
from	#t1 A left join #t2 B on A.ID = B.ID
where	B.ID is null
option (hash join,force order)

drop table #t2
drop table #T1


Option - для выбора различных стратегий соединения
(сиквел мог бы и сам выбрать хэш или циклы - в зависимости от наличия свободной памяти, загрузки, мощности выборок и т.д.)
У меня получилось следующее

id id
----------- -----------
1 NULL
3 NULL
5 NULL
7 NULL
9 NULL

id id
----------- -----------
7 NULL
5 NULL
3 NULL
9 NULL
1 NULL



@@version
Microsoft SQL Server 2000 - 8.00.534 (Intel X86)
Nov 19 2001 13:23:50
Copyright (c) 1988-2000 Microsoft Corporation
Standard Edition on Windows NT 5.0 (Build 2195: Service Pack 2)

Вроде бы как удалось получить при одном и том же (формально) запросе разный порядок данных в выборке
В принципе, чуть ранее я об этом и говорил
B.R. Alexey
...
Рейтинг: 0 / 0
10 сообщений из 35, страница 2 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Рушится вера в
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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