it-swarm.dev

هل من الضروري استخدام # لإنشاء الجداول المؤقتة في خادم SQL؟

هل من الضروري استخدام # قبل إنشاء جدول مؤقت في خادم SQL؟

مثال:

SELECT column1, column2, someInt, someVarChar 
INTO ItemBack1 
FROM table2
WHERE table2.ID = 7

بالنسبة لـ ItemBack1 ، هل من الضروري استخدام رمز #؟

إذا لم يكن كذلك ، فما فائدة # في إنشاء جداول مؤقتة؟

89
Arun CM

نعم فعلا. تحتاج إلى بادئة اسم الجدول مع "#" (التجزئة) لإنشاء جداول مؤقتة.

إذا لم تكن بحاجة إلى الجدول لاحقًا ، فاستمر في إنشائه. الجداول المؤقتة تشبه إلى حد كبير الجداول العادية. ومع ذلك ، يتم إنشاؤه في tempdb. أيضًا ، لا يمكن الوصول إليه إلا من خلال الجلسة الحالية ، على سبيل المثال ، بالنسبة إلى EG: إذا حاول مستخدم آخر الوصول إلى جدول temp الذي أنشأته ، فلن يتمكن من ذلك.

"##" (علامة التجزئة المزدوجة تنشئ جدول مؤقت "عمومي" يمكن الوصول إليه بواسطة جلسات أخرى أيضًا).

راجع الرابط أدناه لمعرفة أساسيات الجداول المؤقتة: http://www.codeproject.com/Articles/42553/Quick-Overview-Tporary-Tables-in-SQL-Server-2005

إذا كان محتوى الجدول أقل من 5000 صف ولا يحتوي على أنواع بيانات مثل nvarchar (MAX) ، varbinary (MAX) ، فيمكنك استخدام متغيرات الجدول.

إنها الأسرع لأنها تشبه تمامًا أي متغيرات أخرى مخزنة في ذاكرة الوصول العشوائي. يتم تخزينها في tempdb كذلك ، وليس في RAM .

DECLARE @ItemBack1 TABLE
(
 column1 int,
 column2 int,
 someInt int,
 someVarChar nvarchar(50)
);

INSERT INTO @ItemBack1
SELECT column1, 
       column2, 
       someInt, 
       someVarChar 
  FROM table2
 WHERE table2.ID = 7;

مزيد من المعلومات حول متغيرات الجدول: http://odetocode.com/articles/365.aspx

148
mobiledaemon

الفرق بين هذا الجدولين ItemBack1 و #ItemBack1 هو أن الأول على ثابت (دائم) حيث أن الآخر مؤقت.

الآن إذا ألقيت نظرة على سؤالك مرة أخرى

هل من الضروري استخدام # لإنشاء جدول مؤقت في خادم sql؟

الجواب هو نعم ، لأنه بدون هذا # السابق ، لن يكون الجدول جدولًا مؤقتًا ، بل سيكون مستقلاً عن جميع الجلسات والنطاقات.

14
zzlalani