Бележки относно заявки

Колко добре познаваме командния синтаксис на езика за заявки 1C?

Опитайте се да подредите реда на операциите в заявката:

Поле1Поле2Поле3
240
3/230
Поле1Поле2Поле3
130
130

Съединяване на маси VS. Проверка на условието WHERE

Коментар. Първо съединете маси. Това го пише в учебниците по SQL. Ето защо, преди да се присъедините, е необходимо внимателно да подготвите таблиците: премахнете "ненужните" записи, свържете индексите. Все още не съм измислил контрапример за сравняване на реда "Свързване на таблици" - "Проверка на условието WHERE".

Проверка на условието WHERE VS. Изчисляване на агрегатни функции без групиране

Резултат : Поле1 = 1,5, Поле2 = 3.

Коментар. Първо се извършва проверката "КЪДЕ". В противен случай резултатът ще бъде празен.

Изчисляване на агрегатни функции без групиране VS. Опции ПЪРВО - Подреждане по.

Резултат : Поле1 = 3,5, Поле2 = 7.

Коментар. Първо се изчисляват агрегатни функции без групиране, след това командите FIRST - Sort By.

Групиране с изчисляване на агрегатни функции VS. опции TOP - Подреди по

Резултат : Поле1 = 3,5, Поле2 = 7, Поле3 = 0.

Коментар. Първо се извършва групиране с изчисляване на агрегатната функция, след това командите FIRST - Sort By. Непосредствено след изчисляване на агрегатните функции се проверява условието „Имащ“. Все още не е измислен контрапример за съпоставяне на реда "Имащ" - "Различен".

Групиране с изчисляване на съвкупностVS функции. опция Различни

Резултат : Поле1 = 2, Поле2 = 6.

Коментар. Първо се извършва групиране с изчисляване на агрегатни функции. Разбира се, използването на тези операции в една заявка е безсмислено.

опция Различни VS. опции TOP - Подреди по

Коментар. Първо се изпълнява опцията "Различни", а след това опциите First -Order By. Ако имаше различен ред на изпълнение, тогава резултатът нямаше да бъде три реда, а два.

Вижте следната заявка:

Подредете от VS. ПЪРВО

Резултат : Поле1 = 1,5, Поле2 = 3.

Коментар. Първо се изпълнява Arrange By. Вижте следващата заявка.

Резултат : Поле1 = 2, Поле2 = 4.

Заключение: SQL операциите се изпълняват последователно

  1. Съединение
  2. Проверка на условието "КЪДЕ".
  3. Групиране с изчисляване на агрегатни функции
  4. Проверка на условието "Имащ".
  5. Вариант Различни
  6. Опция Подреди по
  7. Вариант Първи

Послеслов

Редът за SQL като цяло е същият като 1C, въпреки че думите са различни :-))

С КУБ или С РОЛЪП

Специални оферти

заявки

заявки

Поле1

Поле1

относно

относно

заявки

Поле1

относно

относно

бележки

относно

заявки

Авторът не се позовава на плановете за заявки, оптимизатора и т.н. Това означава, че [може би] не съм разбрал дълбоко тази тема. И фактът, че той направи проучване и сподели резултатите, е доста добър. Освен това заключенията му са предимно правилни.

Препоръчайте на колега материал за изучаване на планове за заявки, оптимизатор и т.н. и тогава той [може би] ще пренапише статията по-правилно.

въпросът остава от "резултати . до . ",които се правят програмно от 1som, това вероятно вече се случва с резултата от всички операции с базата данни

Статията няма нищо общо с оптимизация и highload. Това е теория на програмирането в най-чистата й форма.

Защото можете да разберете кои операции и в каква последователност действително се изпълняват само като погледнете плана на заявката. Но ако различен ред на изпълнение на операции на заявки позволява различни резултати, тогава резултатът от изпълнението на плана логично ще съответства на посочения ред.

В противен случай, когато изпълнявате

SQL ще бъде принуден да прочете цялото съдържание на всички таблици, дори ако съществуват перфектно покриващи индекси. Можете ли да си представите до какво би довела една заявка за четене, да речем, на документ с табличен раздел, ако бъдат въведени няколко милиона от тях?

Всъщност SQL на първо място се стреми да приложи съществуващите условия към изходните таблици.

Няма никакъв смисъл в реда на изпълнение на TOP, той просто прекъсва изпълнението на плана, след като получи достатъчно редове от резултата.