Що таке Cross Apply? Cross Apply — це функція SQL, представлена в SQL Server, яка працює подібно до об’єднання. Це дозволяє вам приєднати таблицю до «функції, яка має табличне значення», або приєднатися до підзапиту, який посилається на зовнішній запит для кожного рядка, що неможливо з об’єднаннями.
Це проста істина всюди в комп’ютерному програмуванні. Ви помітите цю проблему продуктивності з CROSS APPLY частіше, ніж деінде, з двох причин: Накладні витрати в SQL Server більші, ніж в інших мовах; і. У CROSS APPLY функція викликається знову і знову, один раз на рядок.
Чи CROSS APPLY краще, ніж INNER JOIN? У той час як оператори APPLY мають схожу логіку з об’єднаннями, використання APPLY не завжди найкращий спосіб написати запит найбільш ефективно. У наведеному нижче запиті на об’єднання я переписав запит CROSS APPLY згори, щоб використовувати пропозицію об’єднання до підзапиту в таблиці SalesOrderDetail.
Хоча CROSS JOIN має «множинний» набір результатів, який ми можемо побачити в CROSS APPLY, він не приймає такі параметри, як CROSS APPLY (як приклад), тому він все ще обмежений у використанні. Однак, як ми бачимо, це призводить до множинного набору результатів.
Оператор APPLY у SQL Server виконує те саме, що й LATERAL JOIN у Snowflake. Ми можемо просто замінити CROSS APPLY на ВНУТРІШНЄ БОКОВЕ З'ЄДНАННЯ щоб запит SQL Server працював у Snowflake.
Перехресне застосування та об’єднання всіх об’єднаних наборів даних використовуються для різних цілей. Перехресне застосування використовується, коли ви хочете взаємодіяти з даними на рівні рядка, тоді як об’єднання всіх використовується для об’єднання двох наборів даних. Мова не йде про перевагу одного над іншим, оскільки вони роблять різні речі.