मुझे लगता है कि वह क्या कहा था कि, जब आप तैयार बयान का उपयोग, एसक्यूएल सर्वर शायद आपकी क्वेरी निष्पादन योजना को कैश कर सका, इसलिए, भले ही आप को क्रियान्वित क्वेरी पर कुछ पैरामीटर संशोधित, सर्वर गलत ले सकता है (कैश किया गया) निष्पादन योजना जो बहुत बुरी तरह प्रदर्शन करेगी।
उन्होंने यह भी फिर से मूल्यांकन करने के लिए निष्पादन की योजना बना रही है कि वह इस स्थिति पर काबू पाने के लिए प्रयोग किया जाता इंजन मजबूर करने के लिए एसक्यूएल सर्वर 2008 की एक नई सुविधा का उल्लेख किया।
तैयार वक्तव्य के साथ, मेरे पास एकमात्र मुद्दा यह है। पर विचार करें निम्नलिखित जावा कोड:
String sql = "select * from table where name like ?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "PATTERN%");
ResultSet rs = pstmt.executeQuery();
यहाँ आप कि उम्मीद करेंगे, अगर आप पर तालिका (नाम) एक सूचकांक है यह क्वेरी योजना द्वारा उपयोग किया जाएगा। अच्छा, यह नहीं होगा। क्योंकि पेपरडेस्टेटमेंट को प्रीकंपाइल करना चाहिए और सबसे खराब की अपेक्षा करना चाहिए: उदाहरण के लिए '% PATTERN%'। तो, यह अनुकूलित नहीं होगा। मुझे यह पता लगाने में थोड़ी देर लग गई। यह मेरे डेटाबेस को भुगतना पड़ा था। :(
आशा है कि यह मदद करता है।
स्रोत
2009-03-24 17:37:48