क्योंकि =
प्रत्येक तालिका से एक एकल मिलान पंक्ति में शामिल होने वाले ऑपरेशन को कम करता है (मान लें कि उन डॉक्टरों को अद्वितीय माना जाता है)।
Adam Alice
Bob Betty
Charly Cathy
Dick Deb
Evan Elly
आप उन्हें पहले अक्षर से जोड़ी: इस रास्ता आप 5 लड़के और 5 लड़कियों के साथ एक नृत्य मिल गया है इसके बारे में
Think। तो
Adam->Alice
Bob->Betty
etc...
एक एकल जोड़ी
लेकिन अगर आप उनके द्वारा "सबसे पहले पत्र से मेल नहीं खाते" जोड़ी, आप के साथ अंत:
Adam->Betty
Adam->Cathy
Adam->Deb
Adam->Elly
Bob->Alice
etc...
तुम बड़े पैमाने पर की संख्या बढ़ा दिया है जोड़ियां। यही कारण है कि आपकी <>
क्वेरी इतनी लंबी लग रही है। आप अनिवार्य रूप से min(m,n)
की बजाय m x n
पंक्तियां लाने की कोशिश कर रहे हैं। इस डेटा के साथ, आप 5 की बजाय 25 पंक्तियों के साथ समाप्त होते हैं। आपके निर्दिष्ट तालिका आकारों के लिए, आप 77,000 * 2,700,000 = 207.9 बिलियन पंक्तियों के साथ काम कर रहे हैं, 77,000 से कम जहां दो आईडी मिलते हैं, कुल 207,8 99, 9 23,000 पंक्तियां जुड़े डेटा सेट।
SELECT DISTINCT logs.DOCID
FROM logs
LEFT JOIN forms ON logs.DOCID = forms.DOCID
WHERE forms.DOCID IS NULL
स्रोत
2011-09-14 15:55:15
'जहां लॉग नहीं हैं। DOCID = form.DOCID'' के बारे में क्या? –
क्या आप 'logs.DOCID' मान ढूंढने की कोशिश कर रहे हैं जिसके लिए' फॉर्म' में कोई संबंधित मान मौजूद नहीं है?यदि ऐसा है तो 'चुनें COUNT (*) से चुनें (फॉर्म से चुनें दस्तावेज़ से चयन करें) टी' –
@ मार्टिन - आपकी क्वेरी 8 सेकंड में लौटी। धन्यवाद! –