Имя: Пароль:
1C
 
Какой порядок выборки (упорядочивания) в случае выборки ссылки?
,
0 ANDRU48
 
14.03.23
18:12
К примеру, запрос:

ВЫБРАТЬ
    БанковскиеСчетаКонтрагентов.Ссылка КАК Ссылка
ИЗ
    Справочник.БанковскиеСчетаКонтрагентов КАК БанковскиеСчетаКонтрагентов
ГДЕ
    БанковскиеСчетаКонтрагентов.Владелец = &Владелец

В каком порядке выходят ссылки в данном случае?
1 Chai Nic
 
14.03.23
18:16
В любом. Согласно стандарту SQL нельзя ожидать какого-либо порядка выборке при отсутствии явного упорядочивания в запросе.
2 RomanYS
 
14.03.23
18:16
(0) в произвольном, пока не задашь порядок явно
3 magicSan
 
14.03.23
18:42
В порядке индекса по Владельцу
4 H A D G E H O G s
 
14.03.23
19:10
В вашем случае - в произвольном. Либо будет читать кластерный индекс по ссылке, либо некластерный по владельцу.
5 magicSan
 
14.03.23
19:41
(4) Сам то понял что написал?
6 H A D G E H O G s
 
14.03.23
20:03
(5) Вы отнесены в категорию "Егор", писать мне сообщения не имеет смысла.
7 magicSan
 
14.03.23
20:09
(6) отбор во владельцу это классика для кластерного.
8 Волшебник
 
модератор
14.03.23
20:22
Не ссорьтесь. Если порядок выборки не определён в запросе, то порядок будет случайным, независимо ни от каких кластерных индексов. Может сработать кэш или фаза луны.
9 Garykom
 
гуру
14.03.23
20:27
(8) Порядок не будет случайным.
Алгоритм кэша вполне определен.
10 Волшебник
 
модератор
14.03.23
20:28
(9) Алгоритм кэша зависит от фазы луны
11 Garykom
 
гуру
14.03.23
20:28
(0) Зависит от многих факторов:
1. Какая СУБД
2. Какие типы данных в таблице
3. Размер таблицы и данных
4. Оптимизация (алгоритм вакуум)
5. Влияние кэша
и т.д.
12 Волшебник
 
модератор
14.03.23
20:29
(11) Вы не должны надеяться на чёткий алгоритм сортировки, если сортировки не было задано. Вроде всё чётко сказано.
13 Garykom
 
гуру
14.03.23
20:30
(10) Фаза луны подчиняется алгоритму http://astrolab.ru/cgi-bin/moon.cgi.html
14 Chai Nic
 
14.03.23
20:31
Вот только бывает даже разработчики типовых не в курсе, и берут в запросе "ПЕРВЫЕ 1" без указания "УПОРЯДОЧИТЬ ПО". Пару раз с таким в ЗУПе встречался.
15 Волшебник
 
модератор
14.03.23
20:31
(14) Это нормально. Значит их устраивает любой.
16 Chai Nic
 
14.03.23
20:32
(15) Только при этом алгоритм допускает ошибку, вместо скажем последнего документа берется какой попало)
17 Chai Nic
 
14.03.23
20:33
+(16) При этом на файловой версии, например, или на mssql ошибка может и не проявиться, а на каком-нибудь постгресе вылезет..
18 Волшебник
 
модератор
14.03.23
20:33
(13) Фазы Луны в целом да, но фаза Луны в момент запроса вообще-то случайна. Если Вы не делаете много запросов подряд, тогда фаза строго определена в момент первого запроса (кэш?) или строго через заданный промежуток времени (тогда кэш+дельта)
19 Волшебник
 
модератор
14.03.23
20:33
(16) Так и должно быть. Ровно такое поведение закладывается в запрос. Если программист надеялся на другое поведение, то он ошибался.
20 Волшебник
 
модератор
14.03.23
20:35
Например, нас интересует любой (какой попало) документ об увольнении сотрудника. Мы понимаем, что он первый или последний, но всегда один. Мы же не путаем Сотрудника и ФизическоеЛицо
21 Garykom
 
гуру
14.03.23
20:37
(20) уволенное и вновь принятое физлицо = новый сотрудник?
по совместительству тоже?
22 Волшебник
 
модератор
14.03.23
20:48
(21) Разумеется, это разные сотрудники. В Вашей базе это единые сущности? Ну я Вас поздравляю. Ждите косяков
23 Chai Nic
 
14.03.23
20:48
(20) Не, в моем случае была ошибка. Я отправлял на техподдержку сообщение, ошибку зарегистрировали и исправили в последующем.
24 Волшебник
 
модератор
14.03.23
20:54
(23) ну трям. А к сабжу это имеет отношение?
25 magicSan
 
14.03.23
21:06
Тут выборка по индексируему полю с возвратам списка ссылок связанных с этим полем, в кеше валяется то что вернула выборка после обработки кластерного индекса - в индексе, очевидно, работает один и тоже алгоритм. В мс будет возвращаться в порядке добавления элементов справочника, в постгри возможны варианты в зависимости от удаления элементов.

(14) "УПОРЯДОЧИТЬ ПО" - одна из самых ёмких операций поэтому всегда стараются её избегать.
26 Chai Nic
 
14.03.23
21:28
(24) Так именно в этом и была ошибка, не использовалось явное упорядочение в запросе, в результате при некоторых исходных данных и на некоторых sql-серверах алгоритм работал неверно.
27 Garykom
 
гуру
14.03.23
21:31
(25) ты про страницы и экстенты то в курсе?