हां, इनके बीच प्रदर्शन में काफी अंतर है:
declare @numbers table (n int not null primary key clustered);
insert into @numbers (n)
values (0)
, (1)
, (2)
, (3)
, (4);
और
declare @numbers table (n int not null primary key clustered);
insert into @numbers (n) values (0);
insert into @numbers (n) values (1);
insert into @numbers (n) values (2);
insert into @numbers (n) values (3);
insert into @numbers (n) values (4);
तथ्य यह है कि हर एक insert
स्टेटमेंट का अपना निहित लेनदेन है इसकी गारंटी देता है। आप प्रत्येक कथन के लिए निष्पादन योजनाओं को देखकर या set statistics time on;
का उपयोग करके निष्पादन के समय को देखकर आसानी से स्वयं को साबित कर सकते हैं। . प्रत्येक व्यक्तिगत इंसर्ट के संदर्भ में "सेटिंग अप" और "फायर डाउन" के साथ एक निश्चित लागत जुड़ी हुई है और दूसरी क्वेरी को इस दंड का पांच बार भुगतान करना पड़ता है जबकि पहला केवल एक बार भुगतान करता है।
सूची पद्धति न केवल अधिक कुशल है बल्कि आप इसका उपयोग व्युत्पन्न तालिका बनाने के लिए भी कर सकते हैं:
select *
from (values
(0)
, (1)
, (2)
, (3)
, (4)
) as Numbers (n);
यह प्रारूप लगभग 1,000 मूल्य सीमा प्राप्त करता है और आपको सम्मिलित होने से पहले अपनी सूची में शामिल होने और फ़िल्टर करने की अनुमति देता है। कोई यह भी देख सकता है कि हम insert
. के लिए बाध्य नहीं हैं बिल्कुल बयान! एक वास्तविक तालिका के रूप में, इस निर्माण का उपयोग कहीं भी किया जा सकता है एक तालिका संदर्भ मान्य होगा।