में टक्कर (मुझे 6,651,744 पंक्तियों की एक तालिका मिली है, जिसमें 6 कॉलम (इंट x 3, छोटा, वर्चर (3 9), वर्कर (2) से बना प्राथमिक कुंजी है। मैं इस तालिका और अन्य तालिका के साथ प्रदर्शन में सुधार करना चाहता हूं जो इस प्राथमिक कुंजी को साझा करता है और अतिरिक्त कॉलम जोड़ता है लेकिन इसमें 37 मीटर पंक्तियां हैं।चेक सर्वर (एसक्यूएल सर्वर 2005
हैश कुंजी बनाने के लिए कॉलम जोड़ने की प्रत्याशा में, मैंने एक विश्लेषण किया और 18,733 टकराव पाए।
SELECT SUM(CT)
FROM (
SELECT HASH_KEY
,COUNT(*) AS CT
FROM (
SELECT CHECKSUM(DATA_DT_ID, BANK_NUM, COST_CTR_NUM,
GL_ACCT_NUM, ACCT_NUM, APPN_CD) AS HASH_KEY
FROM CUST_ACCT_PRFTBLT
) AS X
GROUP BY HASH_KEY
HAVING COUNT(*) > 1
) AS Y
SELECT COUNT(*)
FROM CUST_ACCT_PRFTBLT
यह बारे में दो बार के रूप में बुरा BINARY_CHECKSUM()
इस बहुत अधिक (.33%) लगता है गंतव्य अंतरिक्ष मैं कवर कर रहा हूँ के छोटे रिश्तेदार अवधि दी गयी है साथ? और यदि टकराव इस उच्च हैं, तो क्या इस निर्मित कुंजी पर प्रति पंक्ति अतिरिक्त 4 बाइट्स की लागत के लिए पहली बार शामिल होने में शामिल होने का लाभ है, बशर्ते कि आपको कभी-कभी नियमित कॉलम पर कभी-कभी टक्कर संभालने के लिए शामिल होना पड़ेगा?
आप एक बार में कितने रिकॉर्ड शामिल हो रहे हैं? क्या विस्तार तालिका में क्लस्टर्ड इंडेक्स है? कितना चौड़ा? यदि क्लस्टर सूचकांक व्यापक है (यानी, इसमें सभी एफके शामिल हैं), क्या आप इसे छोड़ सकते हैं या इसे पहचान कॉलम से बदल सकते हैं? –
यह आपके लिए एक समस्या क्यों है? आपको पूरा करने की क्या ज़रूरत है? –
समस्या यह है कि आंकड़ों की 37 मीटर पंक्तियों से उत्पन्न होने के लिए व्युत्पन्न आंकड़ों की 200 मीटर पंक्तियां हैं और गणना करने के लिए PIVOT को बहुत बड़ी कुंजी पर पिवोट करना पड़ता है जिसके परिणामस्वरूप tempdb में सभी 37m पंक्तियों का एक बुरा उत्सुक स्पूल होता है। –