के बीच छेड़छाड़ ढूँढना मैं MySQL में एक ही तालिका में दो कॉलम के बीच (सेट) चौराहे खोजने की कोशिश कर रहा हूं। मैं मूल रूप से पंक्तियों है कि या तो एक col1 तत्व तालिका के col2, या एक col2 तत्व तालिका के col1 में है कि में है कि खोजना चाहते हैं।दो कॉलम
शुरू में मैंने कोशिश की:
SELECT * FROM table WHERE col1 IN (SELECT col2 FROM table)
जो वाक्य रचना वैध था, फिर भी रन-टाइम अभी तक बहुत अधिक है। तालिका में पंक्तियों की संख्या ~ 300,000 है और प्रश्न में दो कॉलम अनुक्रमित नहीं हैं। मुझे लगता है कि रन टाइम या तो एन^2 या एन^3 है, इस पर निर्भर करता है कि MySQL तालिका के प्रत्येक तत्व के लिए फिर से उपकुंजी निष्पादित करता है या यदि यह अस्थायी रूप से सबक्वायरी का परिणाम संग्रहीत करता है।
अगला मैं दो स्तंभों के मिलन ले रहे हैं और अलग-अलग एलीमेंट को दूर करने के बारे में सोचा क्योंकि एक तत्व दिखाई देता है, तो अधिक एक बार इस संघ में तो यह दोनों स्तंभ में मौजूद रहा होगा की तुलना में (यह मानते हुए दोनों स्तंभ केवल विशिष्ट तत्व होते हैं) ।
क्या एक ही टेबल के दो कॉलम के बीच सेट चौराहे खोजने के लिए एक और अधिक सुरुचिपूर्ण (यानी तेज़) तरीका है? col1
और col2
पर
का उपयोग कभी नहीं 'का चयन करें मेज से एक्स कहां Coly में (का चयन करें ...)' 'में (SELECT' क्वेरी नरक के रूप में धीमा है MySQL में, हमेशा @joe – Johan