تفاوت میان CTE و Temp Table و Table Variable
تفاوت میان CTE و Temp Table و Table Variable
این سه جدول معمولا برای ذخیره داده ها به طور موقت در SQL Server مورد استفاده قرار می گیرد. در این مقاله، شما تفاوت های این سه را خواهید آموخت.
تفاوت میان CTE و Temp Table و Table Variable
این سه جدول معمولا برای ذخیره داده ها به طور موقت در SQL Server مورد استفاده قرار می گیرد. در این مقاله، شما تفاوت های این سه را خواهید آموخت.
CTE
CTE با SQL Server 2005 معرفی شد. از CTE میتوان در دستور CREATE VIEW و دستور SELECT مربوط به آن استفاده کرد. در نسخه SQL Server 2008 نیز امکان استفاده از CTE در دستور MERGE فراهم شده است.
در SQL Serverاز دو نوع CTE بازگشتی و غیر بازگشتی پشتیبانی میشود. CTE باعث بهبود خوانایی و سهولت در نگهداری کوئری ها پیچیده می شود. CTE را با semicolon شروع کنید.
- یک sub query با CTE
با استفاده از CTE کوئری بالا را می توان بار دیگر به اینصورت نوشت:
زمان استفاده از CTE
- برای نگهداری و آسانتر کردن کوئری های پیچیده
- همچنین برای ایجاد یک پرس و جو مجدد استفاده می شود.
Temporary Tables
در SQL Server، جداول موقت در زمان اجرا ایجاد می شوند و شما می توانید تمام عملیات را که می توانید در یک جدول معمولی انجام دهید، در این جدول انجام دهید. این جداول در داخل پایگاه داده Tempdb ایجاد شده است. Temp Table دارای دو نوع زیر است:
- Local Temp Table
Local Temp Table یا جدول موقت محلی، صرفاً به ازای Session ایجاد کنند در دسترس است و با بسته شدن Session ایجادکننده از بین می روند. محل قرار گیری Local Temp Table در بانک اطلاعاتی Tempdb است.
این جدول با علامت ("#") شروع می شود.
- Global Temp Table
Global Temp Table یا جدول موقت عمومی، به ازای کلیه Session ها در دسترسی است و با بسته شدن Session ایجاد کنند، از بین نمی رود.
این جدول با علامت ("##") شروع می شود.
جداول موقت جهانی برای همه اتصالات SQL Server قابل مشاهده هستند در حالی که جداول موقت محلی فقط برای اتصال فعلی SQL Server قابل مشاهده هستند.
Table Variable
Table Variable ها به شکل متغییر تعریف می شوند. این جدول ها صرفاً به ازای Session ایجاد کننده در دسترس هستند.