के साथ खराब प्रदर्शन मेरे पास एक वेब सेवा है, इसलिए हैंडलर को हर समय कई बार समझा जाता है।sqlparameter
अंदर मैं एसक्यूएलकनेक्शन और एसक्यूएल कॉमांड बना देता हूं। मुझे लगभग 7 अलग-अलग आदेश निष्पादित करना होगा। विभिन्न आदेशों विभिन्न मापदंडों की आवश्यकता होती है, इसलिए मैं सिर्फ उन्हें एक बार जोड़ें:
command.Parameters.Add(new SqlParameter("@UserID", userID));
command.Parameters.Add(new SqlParameter("@AppID", appID));
command.Parameters.Add(new SqlParameter("@SID", SIDInt));
command.Parameters.Add(new SqlParameter("@Day", timestamp.Date));
command.Parameters.Add(new SqlParameter("@TS", timestamp));
फिर निष्पादन के दौरान मैं सिर्फ CommandText prorerty बदलने और उसके बाद ExecuteNonQuery फोन(); या ExecuteScalar();
और मुझे प्रदर्शन समस्या का सामना करना पड़ता है। उदाहरण के लिए थोड़ा debuggin और रूपरेखा से पता चलता है, कि कमान
command.CommandText = "SELECT LastShowTS FROM LogForAllTime WHERE UserID = @UserID";
avarage में 50ms के बारे में लेता है। अगर मैं इसे बदलता हूं:
command.CommandText = "SELECT LastShowTS FROM LogForAllTime WHERE UserID = '" + userID.Replace("\'", "") + "'";
तो यह केवल 1ms अवतार में लेता है!
मुझे समस्या का पता लगाने के लिए सिर्फ एक सुराग नहीं मिल सकता है।
क्या आप बता सकते हैं: सी # में 'userID' का परिभाषित प्रकार क्या है, और डेटाबेस में' UserID' कॉलम का परिभाषित प्रकार क्या है? –
क्या आप वाकई अपनी प्रदर्शन बाधा है? क्या आपने सब कुछ प्रोफाइल किया है? – asawyer
उपयोगकर्ता आईडी एक स्ट्रिंग है, डीबी में यह वर्कर (20) है और एक पीके –