क्वेरी प्लान में चेतावनी "कार्डिनैलिटी एस्टीमेट"


17
create table T(ID int identity primary key)
insert into T default values
insert into T default values

go

select cast(ID as varchar(10)) as ID
from T
where ID = 1

ऊपर दिए गए क्वेरी में क्वेरी प्लान में एक चेतावनी है।

<Warnings>
  <PlanAffectingConvert ConvertIssue="Cardinality Estimate" Expression="CONVERT(varchar(10),[xx].[dbo].[T].[ID],0)" />
</Warnings>

इसकी चेतावनी क्यों है?

क्षेत्र सूची में कोई कार्डिनलिटी अनुमान को कैसे प्रभावित कर सकता है?

जवाबों:


12

यह चेतावनी SQL सर्वर 2012 के लिए नई थी।

से नया "अभिव्यक्ति में टाइप करें रूपांतरण ....." व्यावहारिक उपयोग करने के लिए SQL2012 में चेतावनी, शोर करने के लिए

मुझे पता है तुम्हारा क्या मतलब है। जबकि मैं मानता हूं कि यह ज्यादातर मामलों में शोर है, इसे ठीक करना हमारे लिए कम प्राथमिकता है। यदि हमें अधिक प्रतिक्रिया मिलती है तो हम इसे देखेंगे। अभी के लिए मैंने इसे डिज़ाइन द्वारा बंद कर दिया है।

कनेक्ट को मार दिया गया था और ऐसा नहीं लगता है कि मूल मुद्दा UserVoice को स्थानांतरित कर दिया गया था। यहाँ एक ही समस्या के बारे में एक अलग UserVoice समस्या है, टाइप रूपांतरण कार्डिनलिटी को प्रभावित कर सकता है

मैं उबाऊ उत्तर प्रदान करूंगा जब तक कि कोई एक बेहतर के साथ नहीं आता है।

इसकी चेतावनी क्यों है?

मेरी ओर से अटकलें।
एक कॉलम पर एक कास्ट होता है जिसका उपयोग उस क्लॉज में किया जाता है जो उस कॉलम के आंकड़े को रोचक बनाते हैं। डेटाटाइप का एक परिवर्तन आँकड़ों को अच्छा नहीं बनाता है, ताकि उस स्थिति के बारे में चेतावनी दी जा सके कि यदि फ़ील्ड सूची से मूल्य कहीं उपयोग किया जा सकता है।

क्षेत्र सूची में कोई कार्डिनलिटी अनुमान को कैसे प्रभावित कर सकता है?

यह तब तक नहीं हो सकता जब तक कि यह किसी व्युत्पन्न तालिका में फ़ील्ड सूची न हो।


मैं निम्नलिखित को अंतिम वाक्य के रूप में लिखूंगा, या क्वेरी एक दृश्य परिभाषा है और क्वेरीज़ चेतावनी को दर्शाते हुए कॉलम पर फ़िल्टर करेगी
जॉन आइस्ब्रेनर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.