|
Какой порядок выборки (упорядочивания) в случае выборки ссылки? | ☑ | ||
---|---|---|---|---|
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) ты про страницы и экстенты то в курсе?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |