यह सबसे पहले और सबसे महत्वपूर्ण प्रदर्शन का सवाल है। आप अपनी ओर से खराब प्रदर्शन करने वाले कोड से निपट रहे हैं और आपको अड़चन की पहचान करनी चाहिए और उसका समाधान करना चाहिए। मैं खराब 2 सेकंड के बारे में बात कर रहा हूं अब प्रदर्शन। SQL सर्वर के प्रदर्शन का विश्लेषण कैसे करें, पर दिशानिर्देशों का पालन करें . एक बार जब आप इस क्वेरी को वेब ऐप (5 एमएस से कम) के लिए स्थानीय रूप से स्वीकार्य निष्पादित करने के लिए प्राप्त करते हैं तो आप इसे एज़ूर एसक्यूएल डीबी में पोर्ट करने का प्रश्न पूछ सकते हैं। अभी आपका परीक्षण खाता केवल मौजूदा अक्षमताओं को उजागर कर रहा है।
अपडेट के बाद
...
@iddepartment int
...
iddepartment='+convert(nvarchar(max),@iddepartment)+'
...
तो यह क्या है? iddepartmentहै कॉलम एक int या एक nvarchar ? और (max) . का उपयोग क्यों करें ?
यहाँ आपको क्या करना चाहिए:
- पैरामीटर करें
@iddepartmentआंतरिक गतिशील एसक्यूएल में - करना बंद करें
nvarchar(max)रूपांतरण।iddepartmentबनाएं और@iddertmentप्रकार मेल खाते हैं iddepartmentपर अनुक्रमणिका सुनिश्चित करें और सभीidkpiएस
यहां बताया गया है कि आंतरिक SQL को कैसे पैरामीटर किया जाए:
set @sql =N'
Select * from (
select kpiname, target, ivalues, convert(decimal(18,2),day(idate)) as iDay
from kpi
inner join kpivalues on kpivalues.idkpi=kpi.idkpi
inner join kpitarget on kpitarget.idkpi=kpi.idkpi
inner join departmentbscs on departmentbscs.idkpi=kpi.idkpi
where example@sqldat.com
group by kpiname,target, ivalues,idate)x
pivot
(
avg(ivalues)
for iDay in (' example@sqldat.com + N')
) p'
execute sp_executesql @sql, N'@iddepartment INT', @iddepartment;
कवरिंग इंडेक्स, अब तक का सबसे महत्वपूर्ण फिक्स है। जाहिर है कि यहां मौजूद की तुलना में अधिक जानकारी की आवश्यकता है। पढ़ें डिजाइनिंग इंडेक्स सभी उप-अध्यायों सहित।
अधिक सामान्य टिप्पणी के रूप में:इस प्रकार की क्वेरी columnstores के लिए उपयुक्त हैं। रोस्टोर से अधिक, हालांकि मुझे लगता है कि डेटा का आकार मूल रूप से छोटा है। Azure SQL DB अद्यतन करने योग्य क्लस्टर्ड कॉलमस्टोर इंडेक्स का समर्थन करता है, आप गंभीर डेटा आकार की प्रत्याशा में इसके साथ प्रयोग कर सकते हैं। उन्हें स्थानीय बॉक्स पर एंटरप्राइज़/डेवलपमेंट की ज़रूरत है, सच है।