आप SQL Server 2000 में एक छोटे से क्षेत्र को अनुक्रमणित नहीं कर सकते , जैसा कि उस समय ऑनलाइन पुस्तकों में दिखाया गया था:
बिट
पूर्णांक डेटा प्रकार 1, 0 या NULL।
टिप्पणियों
टाइप बिट के कॉलम उन पर अनुक्रमित नहीं कर सकते हैं।
हां, यदि आपके पास केवल मुट्ठी भर पंक्तियां हैं, तो लाखों लोगों में से एक सूचकांक मदद करेगा। लेकिन अगर आप इसे इस मामले में करना चाहते हैं तो आपको कॉलम बनाने की जरूरत है tinyint
।
नोट : एंटरप्राइज मैनेजर आपको बिट कॉलम पर एक इंडेक्स बनाने की अनुमति नहीं देगा। यदि आप चाहें तो आप अभी भी मैन्युअल रूप से एक बिट कॉलम पर एक इंडेक्स बना सकते हैं:
CREATE INDEX IX_Users_IsActiveUsername ON Users
(
IsActive,
Username
)
लेकिन SQL Server 2000 वास्तव में इस तरह के सूचकांक का उपयोग नहीं करेगा - एक क्वेरी चल रही है जहां सूचकांक एक आदर्श उम्मीदवार होगा, जैसे:
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
एसक्यूएल सर्वर 2000 इसके बजाय एक टेबल स्कैन करेगा, जैसे कि एक्ट भी मौजूद नहीं है। यदि आप एक छोटे एसक्यूएल सर्वर 2000 को कॉलम बदलते हैं तो एक इंडेक्स की तलाश करेंगे। इसके अलावा, निम्नलिखित गैर-कवर क्वेरी:
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
यह एक सूचकांक की तलाश करेगा, उसके बाद एक बुकमार्क लुकअप होगा।
SQL Server 2005 में बिट कॉलम पर अनुक्रमित के लिए सीमित समर्थन है। उदाहरण के लिए:
SELECT TOP 1 Username
FROM Users
WHERE IsActive = 0
कवर सूचकांक के माध्यम से एक सूचकांक की तलाश का कारण होगा। लेकिन गैर-कवर मामला:
SELECT TOP 1 *
FROM Users
WHERE IsActive = 0
एक बुकमार्क लुकअप द्वारा अनुक्रमणिका की तलाश का कारण नहीं होगा, यह एक बुकमार्क देखने के बाद अनुक्रमणिका की तलाश करने के बजाय एक टेबल स्कैन (या क्लस्टर इंडेक्स स्कैन) करेगा।
प्रयोग और प्रत्यक्ष अवलोकन द्वारा सत्यापित।