Което е по-бързо от LEFT JOIN или подзаявка в SELECT, Алексей Скахин

Личен блог. Бележки за програмиране и др

Което е по-бързо от LEFT JOIN или подзаявка в SELECT

Често се изисква да се избират допълнителни параметри като плюс към основната извадка.
Това може да стане по два начина:

  • НАЛЯВО ПРИСЪЕДИНЯВАНЕ към основната заявка
  • Подзаявка в секция SELECT
Пример за заявка, която избира артикул и продуктова група на артикул:

Подзаявка в секция SELECT:Опция с ЛЯВО ПРИСЪЕДИНЯВАНЕ:След анализиране на плана за изпълнение на заявката в MS SQL Server беше разкрито:

  • При извличане в раздела SELECT е необходимо допълнително време за обединяване на основната селекция и подзаявката. Излезе 1% от общото време. (+ НАЛЯВО ПРИСЪЕДИНЯВАНЕ/- ИЗБЕРЕТЕ)
  • Оказа се, че всяко ЛЯВО ПРИСЪЕДИНЯВАНЕ се изпълнява от отделна нишка! Докато подзаявките се изпълняват последователно след основното извличане. (+ НАЛЯВО ПРИСЪЕДИНЯВАНЕ/- ИЗБЕРЕТЕ)
  • Всяко ЛЯВО ПРИСЪЕДИНЯВАНЕ се комбинира в набор от резултати, което изисква допълнителна памет. Докато подзаявката ще ни върне по една стойност на ред, т.е. имаме нужда от по-малко памет, за да получим резултата. (- НАЛЯВО ПРИСЪЕДИНЯВАНЕ/+ ИЗБЕРЕТЕ)