मेरे पास दो डेटाबेस सर्वर हैं, जो लिंक्ड सर्वर के माध्यम से जुड़े हैं। दोनों SQL सर्वर 2008R2 डेटाबेस हैं, और लिंक किए गए सर्वर कनेक्शन को वर्तमान लॉगिन के सुरक्षा संदर्भ का उपयोग करके एक नियमित "SQL सर्वर" लिंक के माध्यम से किया जाता है। लिंक किए गए सर्वर दोनों एक ही डेटासेंटर में हैं, इसलिए कनेक्शन एक मुद्दा नहीं होना चाहिए।
मैं निम्नलिखित क्वेरी का उपयोग यह जांचने के लिए करता हूं कि कॉलम के कौन से मूल्य identifier
दूरस्थ रूप से उपलब्ध हैं, लेकिन स्थानीय रूप से नहीं।
SELECT
identifier
FROM LinkedServer.RemoteDb.schema.[TableName]
EXCEPT
SELECT DISTINCT
identifier
FROM LocalDb.schema.[TableName]
दोनों तालिकाओं पर स्तंभ पर गैर-क्लस्टर किए गए अनुक्रमित हैं identifier
। स्थानीय रूप से लगभग 2.6M पंक्तियाँ हैं, केवल 54 दूर। फिर भी, जब क्वेरी योजना को देखते हैं, तो निष्पादन समय का 70% "दूरस्थ क्वेरी निष्पादित" करने के लिए समर्पित है। इसके अलावा, पूर्ण क्वेरी योजना का अध्ययन करते समय, अनुमानित स्थानीय पंक्तियों की संख्या 1
इसके बजाय होती है 2695380
(केवल बाद में आने वाली क्वेरी का चयन करते समय अनुमानित पंक्तियों की संख्या EXCEPT
)।
इस क्वेरी को निष्पादित करते समय, वास्तव में एक लंबा समय लगता है।
यह मुझे आश्चर्यचकित करता है: यह क्यों है? क्या अनुमान "बस" रास्ता बंद है, या लिंक सर्वर पर दूरस्थ प्रश्न वास्तव में महंगे हैं?