اضافه شدن CROSS APPLY وOUTER APPLY به اس کیو ال از نسخه ۲۰۱۴ به بعد

شاید بارها برای تمام دوستان و برنامه نویسان اتفاق افتاده باشد که بخواهند چند سطر را در یک کوئری به عنوان ستون اضافه کنند و برای هر ستون باید کوئری جدا بنویسند مثلا شما فرض کنید یک جدول دارید که مشخصات نام ها را ذخیره کردید و جدول دومی دارید که در آن شماره تلفن ها ذخیره شده و یک کلید یا چند کلید پل ارتباطی دو جدول هست برای دیدن اطلاعات چند راه دارید یا باید دو جدول با هم جوین کنید یا به صورت کوئری در ستون ها اضافه کنید در بعضی مواقع اگر جداول ارتباط دور داشته باشند فقط باید در ستون کوئری اضافه کنید تا بتوانید اطلاعات رو روئیت کنید و سرعت کوئری شما گرفته می شود برای دیدن اطلاعات .

عملگر APPLY به شما امکان می دهد دو عبارت جدول را به هم بپیوندید. عبارت جدول سمت راست هر بار برای هر ردیف از عبارت جدول سمت چپ پردازش می شود. همانطور که ممکن است حدس بزنید، ابتدا عبارت جدول سمت چپ ارزیابی می شود و سپس عبارت جدول سمت راست در برابر هر ردیف از عبارت جدول سمت چپ برای مجموعه نتایج نهایی ارزیابی می شود. مجموعه نتیجه نهایی شامل تمام ستون های انتخاب شده از عبارت جدول سمت چپ و به دنبال آن تمام ستون های عبارت جدول سمت راست است.

عملگر CROSS APPLY اگر با عبارت جدول سمت راست مطابقت داشته باشد، فقط آن سطرها را از عبارت جدول سمت چپ (در خروجی نهایی آن) برمی گرداند. به عبارت دیگر، عبارت جدول سمت راست ردیف‌هایی را فقط برای عبارت جدول سمت چپ منطبق برمی‌گرداند.
عملگر OUTER APPLY تمام سطرها را از عبارت جدول سمت چپ صرف نظر از مطابقت آن با عبارت جدول سمت راست برمی گرداند. برای سطرهایی که هیچ تطابق متناظری در عبارت جدول سمت راست وجود ندارد، حاوی مقادیر NULL در ستون‌های عبارت جدول سمت راست است.
بنابراین ممکن است نتیجه بگیرید که CROSS APPLY معادل یک JOIN داخلی است (یا به عبارت دقیق تر مانند یک CROSS JOIN با یک جستار فرعی مرتبط) با شرط پیوستن ضمنی ۱=۱ در حالی که OUTER APPLY معادل یک LEFT است. عضویت خارجی.
ممکن است از خود بپرسید که آیا با یک بند JOIN معمولی می توان به همین کار دست یافت، پس چرا و چه زمانی از عملگر APPLY استفاده می کنید؟ اگرچه می‌توان همین کار را با یک JOIN معمولی به دست آورد، اما اگر عبارتی با ارزش جدول در سمت راست داشته باشید و در برخی موارد استفاده از عملگر APPLY عملکرد درخواست شما را افزایش می‌دهد، نیاز به APPLY ایجاد می‌شود.

اس کیو ال از نسخه ۲۱۰۴ کراس اپلای و آتر اپلای(CROSS APPLY وOUTER APPLY )رو اضافه کرده تا هم سرعت کار شما بهتر باشد هم محاسن دیگر که در این مقاله نمی گنجد

select * from PLM_WorkStation a
outer apply (select top(1)  aa.Note,aa.WorkStationId from PLM_WorkStationRemark aa where aa.WorkStationId=a.WorkStationId order by CreateDate desc  )Tsa
SELECT * FROM PLM_WorkStation D 
CROSS APPLY 
   ( 
   SELECT * FROM PLM_WorkStationRemark E 
   WHERE E.WorkStationId= D.WorkStationId
   ) A 

کد های بالا دو نمونه از CROSS APPLY وOUTER APPLY تست ها ش داشته باشید و لذتشو ببرید سوالی بود بپرسید .

شاید این مطالب را هم دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.