मेरे पास डेटा है जो पूर्णांक मानों का एक मैट्रिक्स है जो एक बैंडेड वितरण वक्र इंगित करता है। मैं INSERT प्रदर्शन पर SELECT प्रदर्शन के लिए अनुकूलित कर रहा हूं। अधिकतम 100 बैंड हैं। मैं मुख्य रूप से इस डेटा को समय-समय पर बैंड को संक्षेप में या औसत से पूछताछ कर रहा हूं।कॉलम को पंक्तियों को denormalizing SQL सर्वर में प्रदर्शन को बढ़ाने के लिए करता है?
मेरा प्रश्न है कि मैं बेहतर प्रदर्शन प्राप्त कर सकता हूं, इस डेटा को प्रत्येक बैंड के लिए 1 कॉलम के साथ एक तालिका में फ़्लैट करके, या बैंड मान का प्रतिनिधित्व करने वाले एकल कॉलम का उपयोग करके?
चपटे डेटा
UserId ActivityId DateValue Band1 Band2 Band3....Band100
10001 10002 1/1/2013 1 5 100 200
या सामान्यीकृत
UserId ActivityId DateValue Band BandValue
10001 10002 1/1/2013 1 1
10001 10002 1/1/2013 2 5
10001 10002 1/1/2013 3 100
नमूना क्वेरी
SELECT AVG(Band1), AVG(Band2), AVG(Band3)...AVG(Band100)
FROM ActivityBands
GROUP BY UserId
WHERE DateValue > '1/1/2012' AND DateValue < '1/1/2013'