Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

CHARINDEX बनाम LIKE सर्च बहुत अलग प्रदर्शन देता है, क्यों?

मैं अपने स्वयं के प्रश्न का उत्तर दूंगा क्योंकि सही उत्तर खोजना कठिन था और मुझे SQL सर्वर 2012 निष्पादन योजना आउटपुट द्वारा समस्या की ओर इशारा किया गया था। जैसा कि आप मूल प्रश्न में देखते हैं - सतह पर सब कुछ ठीक दिखता है। यह SQL सर्वर 2008 है।

जब मैं 2012 को एक ही क्वेरी चलाता हूं तो मुझे CHARINDEX . पर चेतावनी मिली सवाल। समस्या यह है कि - SQL सर्वर को टाइप रूपांतरण करना था। Address1 VarCharहै और क्वेरी में N'1124' है जो यूनिकोड या NVarChar . है . अगर मैं इस क्वेरी को इस तरह बदलता हूं:

SELECT * 
FROM LOCAddress 
WHERE (CAST(CHARINDEX(LOWER('1124'), LOWER([Address1])) AS int)) 

इसके बाद यह LIKE . के समान चलता है सवाल। तो, एंटिटी फ्रेमवर्क जेनरेटर के कारण होने वाला रूपांतरण टाइप करें जिससे प्रदर्शन में यह भयानक हिट हो रही थी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे जांचें कि टेबल पर कौन से ताले हैं

  2. SQL सर्वर में SA खाते का नाम बदलें (T-SQL उदाहरण)

  3. TSQL:ट्रिगर में ट्राइ-कैच ट्रांजैक्शन

  4. SQL सर्वर ट्रिगर - भाग 2 DDL और लॉगऑन ट्रिगर

  5. एक ही एसएसआईएस पैकेज को अलग-अलग समय पर अलग-अलग मापदंडों के साथ निष्पादित करना