क्यों अनन्य सूचकांक स्कैन के बाद कुल ऑपरेटर का उपयोग किया जाता है


15

मेरे पास गैर-अशक्त मूल्यों के लिए फ़िल्टर किए गए एक अद्वितीय सूचकांक के साथ एक तालिका है। क्वेरी प्लान में विशिष्ट का उपयोग होता है। क्या इसका कोई कारण है?

USE tempdb

CREATE TABLE T1( Id INT NOT NULL  IDENTITY PRIMARY KEY ,F1 INT , F2 INT )
go
CREATE UNIQUE NONCLUSTERED INDEX UK_T1 ON T1 (F1,F2) WHERE F1 IS NOT NULL AND F2 IS NOT NULL 
GO
INSERT INTO  T1(f1,F2) VALUES(1,1),(1,2),(2,1)

SELECT DISTINCT   F1,F2 FROM T1 WHERE F1 IS NOT NULL AND F2 IS NOT NULL 
SELECT  F1,F2 FROM T1 WHERE F1 IS NOT NULL AND F2 IS NOT NULL  

क्वेरी योजना: यहाँ छवि विवरण दर्ज करें

जवाबों:


15

यह एक ज्ञात SQL Server क्वेरी ऑप्टिमाइज़र सीमा है। यह Microsoft को सूचित कर दिया गया है, लेकिन कनेक्ट आइटम (अब उपलब्ध नहीं है) को बंद नहीं किया जाएगा।

इस सीमा के अतिरिक्त परिणाम हैं, जिनमें कुछ मैंने फ़िल्टर किए गए अनुक्रमित के साथ ऑप्टिमाइज़र सीमाओं के बारे में लिखा है , सारांश नीचे दिया गया है:

यह पोस्ट फ़िल्टर्ड अनुक्रमित के साथ दो महत्वपूर्ण ऑप्टिमाइज़र सीमाओं को उजागर करती है:

  • फ़िल्टर किए गए अनुक्रमित से मिलान करने के लिए निरर्थक शामिल होने के लिए आवश्यक हो सकता है
  • फ़िल्टर किए गए अनन्य अनुक्रमणिका ऑप्टिमाइज़र को विशिष्टता की जानकारी प्रदान नहीं करते हैं

कुछ मामलों में यह अनावश्यक हो सकता है कि केवल हर प्रश्न के लिए निरर्थक विधेय को जोड़ा जाए। विकल्प यह है कि एक अनुमानित दृश्य में वांछित निहित विधेयकों को कूटबद्ध किया जाए। इस पोस्ट में हैश मैच योजना डिफ़ॉल्ट योजना की तुलना में बहुत बेहतर थी, भले ही आशावादी को थोड़ा बेहतर मर्ज जॉइन प्लान खोजने में सक्षम होना चाहिए। कभी-कभी, आपको दृश्य को अनुक्रमित करने और NOEXPANDसंकेत का उपयोग करने की आवश्यकता हो सकती है (मानक संस्करण उदाहरणों के लिए वैसे भी आवश्यक)। अभी भी अन्य परिस्थितियों में, इनमें से कोई भी दृष्टिकोण उपयुक्त नहीं होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.