आपको निष्पादन योजनाओं की जांच करने की आवश्यकता है। हालांकि, मुझे उम्मीद है कि निष्पादन योजनाएं अलग हैं - या कम से कम वे कुछ परिस्थितियों में होनी चाहिए।
पहली क्वेरी:
SELECT DISTINCT a, b, c FROM table1
UNION DISTINCT
SELECT DISTINCT a, b, c FROM table2
table1(a, b, c)
. पर अनुक्रमणिका का आसानी से लाभ उठा सकते हैं और table2(a, b, c)
पहले अंतिम UNION
कर रहा है . यह डेटा के आकार को कम करके अंतिम संघ को गति देना चाहिए। दूसरी क्वेरी में यह लाभ नहीं है।
वास्तव में, इस क्वेरी को लिखने का सबसे कारगर तरीका शायद दो इंडेक्स और उपयोग करना होगा:
SELECT DISTINCT a, b, c FROM table1 t1
UNION ALL
SELECT DISTINCT a, b, c
FROM table2 t2
WHERE NOT EXISTS (SELECT 1 FROM table1 t1 WHERE t2.a = t1.a and t2.b = t1.b and t2.c = t1.c)
यह लगभग समान है, हालांकि यह NULL
. को संभाल सकता है दूसरी तालिका में मान थोड़ा अलग है।