संग्रहीत प्रक्रिया या दृश्य के अंत में जुड़ने की लंबी सूची के बजाय, इन-लाइन में शामिल होने के प्रभाव में, टी-एसक्यूएल में कोड को बहुत पसंद करना पसंद है।आंतरिक जुड़ने के कोडिंग के दो तरीके कौन से तेज़ हैं?
उदाहरण के लिए, मैं कोड:
SELECT PKey , Billable,
(SELECT LastName FROM Contact.dbo.Contacts WHERE (Pkey = Contacts_PKey)),
(SELECT Description FROM Common.dbo.LMain WHERE (PKey= DType)),
(SELECT TaskName FROM Common.dbo.LTask WHERE (PKey = TaskType)) ,
StartTime, EndTime, SavedTime
FROM dbo.TopicLog where StartTime > '7/9/09' ORDER BY StartTime
से
SELECT t.PKey, t.Billable, c.LastName, m.Description, lt.TaskName, t.StartTime, t.EndTime, t.SavedTime
FROM dbo.TopicLog AS t
inner join Contact.dbo.Contacts as c on c.Pkey = t.Contacts_PKey and t.StartTime > '7/9/09'
inner join Common.dbo.LMain as m on m.PKey = t.DType
inner join Common.dbo.LTask as lt on lt.PKey = t.TaskType
ORDER BY t.StartTime
मैं वाक्य रचना के इस प्रकार पसंद करते हैं क्योंकि यह इतना कम भ्रामक है जब लिख रहे हैं या डीबगिंग, खासकर जब वहाँ कई तालिकाओं हैं बल्कि शामिल होने या अन्य सामान चल रहा है (केस स्टेटमेंट्स, टी-एसक्यूएल फ़ंक्शंस, स्वयं जॉइन इत्यादि)
लेकिन मेरा सवाल है - डाटाबेस से पूछकर प्रदर्शन प्रदर्शन कर रहा हूं इस तरह से।
मेरे पास अभी तक कोई अंतर मापने में सक्षम होने के लिए एकत्रित पर्याप्त डेटा नहीं है, लेकिन मैं सड़क पर कुछ बिंदु पर जाऊंगा।
मैं आगे बढ़ने से पहले पता लगाना चाहता हूं। मैं बाद में वापस जाना नहीं चाहता और प्रदर्शन में सुधार के लिए सब कुछ रिकोड करना चाहता हूं।
+1। जैसा कि आप इंगित करते हैं, विचारशील अनुक्रमण से होने वाली जीत महत्वपूर्ण लाभ पैदा करने की अधिक संभावना है। (लेकिन निष्पादन योजना की जांच करने से उन्हें निश्चित रूप से पता चल जाएगा!) – Beska
+1 "अपने लिए क्वेरी निष्पादन योजनाएं जांचें!" यह सुनिश्चित करने का एकमात्र तरीका है। ऑप्टिमाइज़र * हो सकता है * उन्हें स्वचालित रूप से आपके लिए जॉइन में बदल दें। हालांकि, दो प्रश्न बिल्कुल समान नहीं हैं। # 1 एक बाएं जॉइन है, # 2 एक इंटर्न जॉइन है। इसलिए वे आपको अलग-अलग योजनाएं देंगे। – beach
यह काफी भ्रामक है - यह एक आम गलतफहमी है कि आपके द्वारा दिए गए कारणों के लिए सबक्वायरी धीमी हैं, जहां वास्तव में एसक्यूएल सर्वर पुनर्मूल्यांकन के दौरान जहां भी संभव हो वहां जुड़ने के रूप में उपक्विरी को फिर से लिखता है। – Justin