آموزش Subquery

🔸subquery

در ادامه مباحث مربوط به SQL performance tuning در این قسمت قصد دارم به تاثیر استفاده از subquery ها در دستورات پرس و جو (select) پرداخته و درباره مزیتی که این دستور بر عملکرد پرس و جو دارد توضیحاتی ارائه دهم

✅ هرگاه در یک دستور SQL پرس و جویی داشتیم که در داخل پرانتز قرار داشت ، به دستور پرس و جوی فوق یک subquery و به دستور پرس و جوی اصلی یک main query گفته میشود

✅ به دو دسته تقسیم میشوند

🖌 single-row subquery:

پرس و جوهایی هستند که یک سطر بازمیگردانند

🖌 multiple-row subquery:

پرس و جوهایی هستند که چندین سطر باز میگردانند

✅ در دستورات پرس و جو در چهار قسمت میتوان از subquery استفاده کرد
1- به عنوان یک فیلد خروجی در دستور select
2- در بخش where clause
3- در بخش having
4- بعنوان خروجی در بخش from

به جای اینکه جدول حجیم را با جداول کوچکتر join کرده و پس از آن خروجی بدست آمده را فیلتر کنید ،میتوانیم با استفاده از subquery ابتدا داده های مورد نظر را فیلتر کرده و سپس خروجی آن را به جداول دیگر متصل کنیم ، به مثال زیر دقت کنید
فرض کنید جدول کارمندان دارای چندین میلیون رکورد است ،در ابتدا دستور پرس و جوی زیر را ملاحظه بفرمایید

select *
from employees e
inner join departments d
on e.department_id = d.department_id
where e.department_id in (20, 50, 80);

حال به پرس و جوی زیر دقت کنید

select *
from (select * from employees e where e.department_id in (20, 50, 80)) tbl_emp
inner join departments d
on tbl_emp.department_id = d.department_id

خروجی هر دو پرس و جو یکسان است ولی

❇️در پرس و جوی اول جدول چندین میلیونی کارمندان را به سازمانها متصل کرده و سپس فیلتر میکنیم

❇️در پرس و جوی دوم ابتدا جدول چندین میلیونی کارمندان را فیلتر کرده و سپس خروجی را به جدول سازمانها متصل میکنیم

پر واضح است که دستور join بین دو جدول کوچکتر کارایی بهتری نسبت به join بین دو جدول بزرگ دارد

 

دانلود فایل pdf

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