डेटाबेस SQL Server 2008 है। मेरे पास एक क्वेरी है जो पंक्तियों को एक या अधिक तालिकाओं से निकालती है और फिर उन्हें तालिका चर में डालने का प्रयास करती है।डुप्लिकेट टेबल सम्मिलित करना
मैं एक कुशल तरीका डुप्लिकेट आवेषण रोकना चाहते हैं, तो क्या मैं के साथ आया था:
INSERT INTO @MyTableVariable
SELECT SomeID
FROM SomeTable st
INNER JOIN SomeOtherTable sot ON sot.SomeID = st.SomeID
LEFT JOIN @MyTableVariable t ON t.SomeID = sot.SomeID
WHERE t.SomeID IS NULL
लेकिन यह कुछ निश्चित परिस्थितियों में डुप्लिकेट आवेषण को रोकने के लिए प्रतीत नहीं होता।
ऐसा लगता है (और यदि आप इसके बारे में सोचते हैं और क्वेरी प्लान देखते हैं तो यह समझ में आता है) कि बाएं जॉइन ऑपरेशन में @MyTableVariable का केवल प्रारंभिक "राज्य" उपयोग किया जाता है। दूसरे शब्दों में, यह डुप्लिकेट को रोक देगा यदि @MyTableVariable में पहले से ही कुछ कथन चलाया गया था, तो यह कथन चलाए जाने से पहले, लेकिन डुप्लीकेट को रोक नहीं पाएगा अगर कुछ/योग्य या कुछ अन्य पर क्लिक करने वाले व्यक्ति को डुप्लिकेट किया गया है।
बस चयन कथन पर एक DISTINCT को थप्पड़ मारने के अलावा, क्या इसे संभालने का एक और अधिक प्रभावशाली तरीका है?
यदि आप 'DISTINCT' या' GROUP BY' नहीं करना चाहते हैं, तो आप अपने कॉलम पर एक अनन्य अनुक्रमणिका बना सकते हैं, और डुप्लिकेट कुंजी को अनदेखा कर सकते हैं। – Lamak
डुप्लिकेट कुंजी त्रुटियों को इगोर करने के बारे में आप कैसे जाते हैं? और क्या यह वास्तव में अलग प्रदर्शन करने से तेज है? – RMD