Нотатки про запити
Чи добре ми знаємо синтаксис команд мови запитів 1С?
Спробуйте розставити порядок виконання операцій у запиті:
| Поле1 | Поле2 | Поле3 |
| 2 | 4 | 0 |
| 3/2 | 3 | 0 |
| Поле1 | Поле2 | Поле3 |
| 1 | 3 | 0 |
| 1 | 3 | 0 |
З'єднання таблиць VS. Перевірка умови ДЕ
Коментар. Спершу виконується З'єднання таблиць. Про це написано у підручниках SQL. Тому перед з'єднанням необхідно ретельно підготувати таблиці: усунути «непотрібні» записи, підключити індекси. Контрприклад на порівняння черговості "З'єднання таблиць" - "Перевірка умови ДЕ" поки що не вигадав.
Перевірка умови ДЕ VS. Розрахунок агрегатних функцій без угруповання
Результат : Поле1 = 1.5, Поле2 = 3.
Коментар. Спочатку виконується Перевірка "ДЕ". Інакше був би пустий результат.
Розрахунок агрегатних функцій без угруповання VS. Опції ПЕРШІ - Упорядкувати По.
Результат : Поле1 = 3.5, Поле2 = 7.
Коментар. Спочатку виконується розрахунок агрегатних функцій без угруповання, потім команди ПЕРШІ – Упорядкувати По.
Угруповання з розрахунком агрегатних функцій VS. опції ПЕРШІ – Упорядкувати По
Результат : Поле1 = 3.5, Поле2 = 7, Поле3 = 0.
Коментар. Спочатку виконується угруповання з розрахунком агрегатних функцій, потім команди ПЕРШІ – Упорядкувати По. Відразу після розрахунку агрегатних функцій перевіряється умова «Ті, що мають». Контрприклад на порівняння черговості "Міючі"-"Різні" поки не придумав.
Угруповання з розрахунком агрегатнихфункцій VS. опція Різні
Результат : Поле1 = 2, Поле2 = 6.
Коментар. Спочатку виконується угруповання з розрахунком агрегатних функцій. Звичайно, застосування в одному запиті цих операцій є безглуздим.
опція Різні VS. опції ПЕРШІ – Упорядкувати По
Коментар. Спочатку виконується Опція "Різні", потім опції Перші -Упорядкувати По. Якби був інший порядок виконання, то в результаті вийшло б не три рядки, а два.
Дивіться наступний запит:
Упорядкувати По VS. ПЕРШІ
Результат : Поле1 = 1,5, Поле2 = 3.
Коментар. Спочатку виконується Упорядкувати По. Дивіться наступний запит.
Результат : Поле1 = 2, Поле2 = 4.
Висновок: операції SQL виконуються у послідовності
- З'єднання
- Перевірка умови "ДЕ"
- Угруповання з розрахунком агрегатних функцій
- Перевірка умови «Ті, що мають»
- Опція Різні
- Опція Упорядкувати за
- Опція Перші
Післямова
Порядок для SQL загалом, збігається з 1С, хоча інші слова :-))
WITH CUBE або WITH ROLLUP
Спеціальні пропозиції













Автор не посилався на плани запитів, оптимізатор та інше. Значить у цій темі [можливо] глибоко не розбирався. А те, що він провів дослідження і поділився результатами дуже непогано. До того в основному його висновки вірні.
Запропонуйте колезі матеріал для вивчення планів запитів, оптимізатора та інше і тоді він [можливо] перепише статтю коректніше.
залишається питання з "підсумки . по . ",які робляться 1сом програмно, ймовірно це відбувається вже з результатом усіх операцій з БД
Стаття не має жодного відношення до оптимізації та хайлоаду. Це теорія програмування у чистому вигляді.
Тому, що дізнатися, які операції та в якій послідовності виконуються насправді, можна лише переглянувши план запиту. Але якщо різний порядок виконання операцій запиту допускає різні результати, то результат виконання плану логічно відповідатиме викладеному порядку.
Інакше під час виконання
SQL був змушений прочитати весь вміст всіх таблиць навіть за наявності ідеально покривають індексів. Ви уявляєте собі, у що вилився б запит читання, скажімо, документа з табличною частиною, якщо їх введено кілька мільйонів?
Практично SQL насамперед прагне застосувати існуючі умови до вихідним таблицям.
Сенсу в порядку виконання TOP взагалі ніякого немає, він просто перериває виконання плану, отримавши достатньо рядків результату.