كيف يتم تخزين مع البيان السجل الخاص باستعلام SELECT؟
-
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 الجدول المشتق من حيث أنه لا يتم تخزينه ككائن ويستمر فقط طوال مدة الاستعلام.
لا تنتمي إلى StackOverflow