تفاوت میان CTE و Temp Table و Table Variable

تفاوت میان CTE و Temp Table و Table Variable

تفاوت میان CTE و Temp Table و Table Variable

این سه جدول  معمولا برای ذخیره داده ها به طور موقت در SQL Server مورد استفاده قرار می گیرد. در این مقاله، شما تفاوت های این سه را خواهید آموخت.

sql-server-temp-table-vs-table-variable-vs-cte.png

تفاوت میان 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

 

sub-query-with-cte.png

 

با استفاده از CTE کوئری بالا را می توان بار دیگر به اینصورت نوشت:

 

query-with-cte.png

 

زمان استفاده از CTE

  • برای نگهداری و آسانتر کردن کوئری های پیچیده
  • همچنین برای ایجاد یک پرس و جو مجدد استفاده می شود.

Temporary Tables

در SQL Server، جداول موقت در زمان اجرا ایجاد می شوند و شما می توانید تمام عملیات را که می توانید در یک جدول معمولی انجام دهید، در این جدول انجام دهید. این جداول در داخل پایگاه داده Tempdb ایجاد شده است. Temp Table دارای دو نوع زیر است:

  • Local Temp Table

Local Temp Table یا جدول موقت محلی، صرفاً به ازای Session ایجاد کنند در دسترس است و با بسته شدن Session ایجادکننده از بین می روند. محل قرار گیری Local Temp Table در بانک اطلاعاتی Tempdb است.

این جدول با علامت ("#") شروع می شود.

 

local-temp-table.png

 

 

run-local-temp-table.png

 

  • Global Temp Table

Global Temp Table یا جدول موقت عمومی، به ازای کلیه Session ها در دسترسی است و با بسته شدن Session ایجاد کنند، از بین نمی رود.

این جدول با علامت ("##") شروع می شود.

 

global-temp-table.png

 

 

run-global-temp-table.png

 

جداول موقت جهانی برای همه اتصالات SQL Server قابل مشاهده هستند در حالی که جداول موقت محلی فقط برای اتصال فعلی SQL Server قابل مشاهده هستند.

Table Variable

Table Variable ها به شکل متغییر تعریف می شوند. این جدول ها صرفاً به ازای Session ایجاد کننده در دسترس هستند.

 

table-variable.png

 

 

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس