अतीत में मैंने एक varbinary (अधिकतम) कॉलम पूछताछ करते समय भयानक प्रदर्शन देखा है। समझा जा सकता है, लेकिन यह तब भी होता है जब यह जांचता है कि यह शून्य है या नहीं, और मैं उम्मीद कर रहा था कि इंजन कुछ शॉर्टकट लेगा।varbinary फ़ील्ड पर ISNULL की जांच के लिए रणनीतियां?
select top 100 * from Files where Content is null
मुझे लगता है कि यह धीमी है क्योंकि यह
- पूरे द्विआधारी बाहर निकलने के लिए की जरूरत है, और
- यह अनुक्रमित नहीं है (varbinary एक सामान्य सूचकांक का हिस्सा नहीं हो सकता है)
This question यहां धीमेपन के मेरे आधार से असहमत प्रतीत होता है, लेकिन मुझे लगता है कि बाइनरी फ़ील्ड समय और समय के साथ प्रदर्शन समस्याएं हैं।
alter table Files
add ContentLength as ISNULL(DATALENGTH(Content),0) persisted
CREATE NONCLUSTERED INDEX [IX_Files_ContentLength] ON [dbo].[Files]
(
[ContentLength] ASC
)
select top 100 * from Files where ContentLength = 0
एक वैध रणनीति है कि है:
एक संभव समाधान मैं के बारे में सोचा एक गणना स्तंभ है कि अनुक्रमित बनाने के लिए है? बाइनरी फ़ील्ड शामिल होने पर कुशलता से पूछताछ करने के लिए अन्य तरीके क्या हैं?