Упорядкування результатів запиту
1.1. Якщо алгоритм обробки результатів запиту залежить від порядку записів у запиті або якщо результат обробки запиту в тій чи іншій формі подається користувачеві, то в тексті запиту слід використовувати речення УПОРЯДКУВАТИ ЗА. За відсутності виразу УПОРЯДКУВАТИ ЗА неможливо зробити жодних припущень про те, у якому порядку будуть подані записи в результатах запиту.Спільне використання з конструкцією РІЗНІ. Обмеження на використання конструкції АВТОУПОРЯДКУВАННЯ
Спільне використання з конструкцією РІЗНІ
Обмеження на використання конструкції АВТОУПОРЯДКУВАННЯ
1.1. Якщо алгоритм обробки результатів запиту залежить від порядку записів у запиті або якщо результат обробки запиту в тій чи іншій формі подається користувачеві, то в тексті запиту слід використовувати речення УПОРЯДКУВАТИ ЗА. За відсутності виразу УПОРЯДКУВАТИ ЗА неможливо зробити жодних припущень про те, у якому порядку будуть подані записи в результатах запиту.
Типові приклади проблем, які можуть виникати:
- різна послідовність рядків табличної частини під час заповнення за результатами запиту;
- різний порядок виведення даних (рядків, колонок) у звітах;
- різне заповнення рухів документа за результатами запиту (*).
Імовірність виникнення різних результатів під час виконання однакових дій підвищується
- під час перенесення інформаційної бази на іншу СУБД
- під час зміни версії СУБД
- під час зміни параметрів СУБД
* Примітка: упорядкування результатів запитів, за якими формуються рухи, виправдане лише в тому разі, якщо упорядкування є частиною алгоритму формування рухів (наприклад, списання залишків партій товарів за FIFO). В інших випадках упорядковувати записи не слід, оскільки додаткове упорядкування створюватиме надмірне навантаження на СУБД.
1.2. Якщо результати запиту повинні тим чи іншим чином відображатися користувачеві, то
- упорядковувати результати таких запитів необхідно за полями примітивних типів;
- упорядкування за полями посилальних типів потрібно замінювати на упорядкування за рядковими поданнями цих полів.
В іншому разі порядок розташування рядків виглядатиме для користувача випадковим (незрозумілим).
Див. також: Сортування рядків таблиць значень
1.3. Відсутність речення УПОРЯДКУВАТИ ЗА виправдана лише в тих випадках, коли
- алгоритм обробки результатів запиту не розраховує на певний порядок записів
- результат обробки виконаного запиту не показується користувачеві
- результат запиту — свідомо один запис
У таких випадках рекомендується не додавати речення УПОРЯДКУВАТИ ЗА до тексту запиту, оскільки це призводить до додаткових витрат часу під час виконання запиту.
Спільне використання з конструкцією РІЗНІ
2. Якщо в запиті використовується конструкція РІЗНІ, упорядкування слід виконувати лише за полями, включеними до вибірки (у секції ВИБРАТИ).
Ця вимога пов’язана з такою особливістю виконання запитів: до полів вибірки неявно включаються поля упорядкування, що, своєю чергою, може призвести до появи в результаті запиту кількох рядків з однаковими значеннями полів вибірки.
Обмеження на використання конструкції АВТОУПОРЯДКУВАННЯ
3. Використання конструкції ПЕРШІ спільно з конструкцією АВТОУПОРЯДКУВАННЯ заборонено.
В інших випадках конструкцію АВТОУПОРЯДКУВАННЯ також не рекомендується використовувати, оскільки розробник не контролює, які саме поля будуть використані для упорядкування. Застосування такої конструкції виправдане лише в тих випадках, коли отриманий порядок записів не важливий, але при цьому він повинен бути однаковим незалежно від застосовуваної СУБД.
Причини використання конструкції АВТОУПОРЯДКУВАННЯ слід зазначати в коментарі, розміщеному безпосередньо перед текстом запиту.