स्थानीय सर्वर पर (एक एसक्यूएल सर्वर 2008 R2), मैं एक पर्याय जुड़ा हुआ सर्वर की ओर इशारा करते syn_view1
कहा जाता है remoteserver.remotedb.dbo.view1
प्रदर्शन प्रभाव
इस धीमी क्वेरी 20 सेकंड चलाने के लिए ले जाता है ।
select e.column1, e.column2
from syn_view1 e
where e.column3 = 'xxx'
and e.column4 = 'yyy'
order by e.column1
यह तेजी से क्वेरी चलाने के लिए 1 सेकंड लेता है।
select e.column1, e.column2
from remoteserver.remotedb.dbo.view1 e
where e.column3 = 'xxx'
and e.column4 = 'yyy'
order by e.column1
दो प्रश्नों में एकमात्र अंतर वास्तव में समानार्थी की उपस्थिति है। जाहिर है, समानार्थी का क्वेरी के प्रदर्शन पर असर पड़ता है।
धीमा क्वेरी के लिये कार्य योजना है:
Plan Cost % Subtree cost
4 SELECT
I/O cost: 0.000000 CPU cost: 0.000000 Executes: 0
Cost: 0.000000 0.00 3.3521
3 Filter
I/O cost: 0.000000 CPU cost: 0.008800 Executes: 1
Cost: 0.008800 0.26 3.3521
2 Compute Scalar
I/O cost: 0.000000 CPU cost: 3.343333 Executes: 1
Cost: 0.000000 0.00 3.3433
1 Remote Query
I/O cost: 0.000000 CPU cost: 3.343333 Executes: 1
Cost: 3.343333 99.74 3.3433
और तेजी से क्वेरी के लिए:
Plan Cost % Subtree cost
3 SELECT
I/O cost: 0.000000 CPU cost: 0.000000 Executes: 0
Cost: 0.000000 0.00 0.1974
2 Compute Scalar
I/O cost: 0.000000 CPU cost: 0.197447 Executes: 1
Cost: 0.000000 0.00 0.1974
1 Remote Query
I/O cost: 0.000000 CPU cost: 0.197447 Executes: 1
Cost: 0.197447 100.00 0.1974
मेरे समझ है कि धीमी गति क्वेरी में, सर्वर से सभी डेटा को हासिल करेगा है रिमोट सर्वर, फिर फ़िल्टर लागू करता है (हालांकि सूचकांक के बिना) जबकि तेज क्वेरी में सर्वर रिमोट सर्वर से फ़िल्टर किए गए डेटा को प्राप्त करता है, इस प्रकार रिमोट इंडेक्स का उपयोग करता है।
क्या तेजी से होने पर समानार्थी का उपयोग करने का कोई तरीका है? शायद लिंक किए गए सर्वर का एक सेटअप? स्थानीय डेटाबेस सर्वर?
सहायता के लिए धन्यवाद!
रिमोट सर्वर पर एक प्रक्रिया बनाने का सुझाव दें। –
@AaronBertrand, यह क्या बदलेगा? क्या इंडेक्स का उपयोग किया जाएगा?क्या मैं अपनी संग्रहीत प्रक्रिया के अंदर जुड़े सर्वर के पूरे पूर्णतः योग्य नाम को निर्दिष्ट करने से बचने में सक्षम हूं? –
हाँ और हाँ। और आप दृश्य के बजाय संग्रहीत प्रक्रिया नाम के लिए समानार्थी बना सकते हैं। –