كيف يتم تخزين مع البيان السجل الخاص باستعلام SELECT؟

StackOverflow https://stackoverflow.com/questions/3108419

  •  29-09-2019
  •  | 
  •  

سؤال

النظر في عبارة SQL (SQL Server 2008) التالية:

WITH MyResult AS
(
  SELECT 
    Name,
    Row_ID AS ORD
  FROM Person Where Gender = @Gender
)
SELECT *
FROM MyResult
WHERE ORD > 5

هل يتم تخزين MyResult في طاولة مؤقتة في TempDB؟ أم أنها تفعل شيئًا آخر؟

نحن نحسن بعض الاستفسارات وسننهض لفهم البيانات (داخليًا) بشكل أفضل للمساعدة في قياس الأداء وما إلى ذلك.

شكرًا

هل كانت مفيدة؟

المحلول

لا ، حسب هذه المقالة MSDN

... CTE عبارة عن بنية على مستوى اللغة-مما يعني أن SQL Server لا يقوم داخليًا بإنشاء الجداول المؤقتة أو الافتراضية ...

و أيضا، كما ذكر هنا:

يمكن اعتبار تعبير الجدول الشائع (CTE) كمجموعة نتيجة مؤقتة يتم تعريفها في نطاق تنفيذ واحد من محدد أو إدراج أو تحديث أو حذف أو إنشاء عبارة عرض. يشبه CTE الجدول المشتق من حيث أنه لا يتم تخزينه ككائن ويستمر فقط طوال مدة الاستعلام.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top