ठीक दिलचस्प सवाल हमेशा ले लिया के रूप में पढ़ा है कि पूर्णांक तेज था और कभी नहीं वास्तव में यह परीक्षण किया गया। मैंने 1 एम रैंडम उपनाम और मेरे डेटा से संपर्कों की एक सूची से स्क्रैच डेटाबेस में टाइप किया, जिसमें कोई इंडेक्स या प्राथमिक कुंजी सिर्फ कच्चा डेटा नहीं था। किसी भी कॉलम में मेरे डेटा की सीमा पर कोई माप नहीं बनाया गया है, इसलिए शुद्ध सांख्यिकीय सेट के बजाय मेरे डेटाबेस की वास्तविकता को प्रतिबिंबित नहीं किया गया है।
select top 100 * from tblScratch where contactsurname = '<TestSurname>' order by NEWID()
select top 100 * from tblScratch where contacttyperef = 1-22 order by NEWID()
न्यूड प्रत्येक बार डेटा सूची को यादृच्छिक बनाने के लिए है। 20 उपनामों और 20 प्रकारों के लिए इसे जल्दी से चलाया। उपनाम उपनाम के बाद प्रश्नों को उपनाम चलाया गया था। संदर्भ संख्या के लिए खोज लगभग 4x तेज था और लगभग 1/2 का उपयोग किया गया था, इसलिए किताबें उन सभी वर्षों पहले ठीक थीं।
स्ट्रिंग -
SELECT TOP 100 * FROM tblScratch WHERE contactsurname = 'hoare' ORDER BY NEWID()
Duration 430ms
Reads 902
CPU 203
पूर्णांक -
SELECT TOP 100 * FROM tblScratch WHERE contacttyperef = 3 ORDER BY NEWID()
Duration 136ms
Reads 902
CPU 79
एक नमूने की मेज पर मैं SamplesId क्लस्टर सूचकांक होने की अपेक्षा करेंगे। सूचकांक की उपस्थिति या प्रकार का भारी प्रभाव पड़ता है। क्या यह वास्तविक या सैद्धांतिक प्रश्न है? –
@SteveHenderson आपकी टिप्पणी को "नमूने की प्राथमिक कुंजी होने की अपेक्षा करें" होने के लिए बदलें, और मैं आपके साथ 100% सहमत हूं :) आईडी कॉलम आमतौर पर कुंजी निर्दिष्ट करते हैं, जो क्लस्टर सूचकांक हो सकता है या नहीं भी हो सकता है। बेशक, यह सिर्फ एक धारणा है ... –
@StuartAinsworth नहीं - मैं यह भी क्लस्टर सूचकांक होने की उम्मीद करता हूं। एक साधारण लुकअप टेबल (आईडी और नाम, कुछ अन्य सामानों के साथ) के साथ मैं उस लुकअप टेबल के भौतिक क्रम को आईडी (प्राथमिक कुंजी और क्लस्टर इंडेक्स) द्वारा होने की अपेक्षा करता हूं। –