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