का उपयोग करते समय बहुत धीमी सबक्वायरीज़ मैं बड़े प्री-मौजूदा एक्सेस डेटाबेस (~ 500 एमबी कॉम्पैक्ट & मरम्मत के बाद ~ 500 एमबी के भीतर निहित डेटा के लिए रिपोर्ट जेनरेट करने पर काम कर रहा हूं), और मुझे धीमी सबक्वायरी में समस्या हो रही है ।"नहीं IN"
डेटाबेस में एक बड़ी तालिका है जिसमें प्रत्येक ग्राहक खरीद का रिकॉर्ड होता है। यहां एक साधारण क्वेरी है जो ग्राहकों को नीली विजेट खरीदी है। यह कुछ सेकंड के भीतर पूरा हो जाता है और लगभग दस हजार रिकॉर्ड देता है।
SELECT DISTINCT CustomerId
FROM ProductSales
WHERE Product = 'BLUE'
यहाँ एक प्रश्न ग्राहकों को जो एक नीले विजेट खरीदा है खोजने की कोशिश करता है जो, लेकिन नहीं एक लाल विजेट है। इसे चलाने में लगभग एक घंटे लगते हैं।
SELECT DISTINCT CustomerId FROM ProductSales
WHERE Product = 'BLUE'
AND CustomerId NOT IN (
SELECT CustomerId
FROM ProductSales
WHERE Product = 'RED'
)
क्या दूसरी क्वेरी को दोबारा करने में कुछ मिनट लगने का कोई तरीका है?
मुझे लगता है कि ग्राहक आईडी फ़ील्ड में दोनों टेबलों पर इंडेक्स हैं? –
क्या आपने उत्पादसेल्स से चयनित डिस्टिंट ग्राहक आईडी का चयन किया है, जहां उत्पाद = 'नीला' शून्य उत्पाद उत्पाद से उत्पाद चुनें जहां उत्पाद = 'लाल' है। मैंने उन मामलों को देखा है जहां यह वास्तव में क्वेरी को तेज करता है, लेकिन वाईएमएमवी –
@ मार्क बी: यहां केवल एक तालिका है, लेकिन ग्राहक आईडी को इस पर अनुक्रमित किया गया है। – James