यह प्रश्न मेरे पुराने प्रश्न से संबंधित है । नीचे दी गई क्वेरी को निष्पादित करने में 10 से 15 सेकंड लग रहे थे:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [company].dbo.[customer]
WHERE (Charindex('123456789',CAST([company].dbo.[customer].[Phone no] AS VARCHAR(MAX)))>0)
कुछ लेखों में मैंने देखा कि प्रयोग करने CAST
और CHARINDEX
अनुक्रमण से कोई लाभ नहीं होगा। कुछ लेख भी हैं जो कहते हैं कि प्रयोग LIKE '%abc%'
करते समय अनुक्रमण से लाभ नहीं LIKE 'abc%'
होगा:
http://bytes.com/topic/sql-server/answers/81467-use-charindex-vs-like-where /programming/803783/sql-server-index-any-improvement-for -उत्तर-प्रश्न http://www.sqlservercentral.com/Forums/Topic186262-8-1.aspx#bm186568
मेरे मामले में मैं प्रश्न को फिर से लिख सकता हूं:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [company].dbo.[customer]
WHERE [company].dbo.[customer].[Phone no] LIKE '%123456789%'
यह क्वेरी पिछले आउटपुट की तरह ही आउटपुट देती है। मैंने कॉलम के लिए एक गैर-सूचीबद्ध सूचकांक बनाया है Phone no
। जब मैं इस क्वेरी को निष्पादित करता हूं तो यह केवल 1 सेकंड में चलता है । 14 सेकंड पहले की तुलना में यह एक बहुत बड़ा बदलाव है ।
LIKE '%123456789%'
अनुक्रमण से कैसे लाभ होता है?
सूचीबद्ध लेख यह क्यों कहते हैं कि यह प्रदर्शन में सुधार नहीं करेगा?
मैंने उपयोग करने के लिए क्वेरी को फिर से लिखने की कोशिश की CHARINDEX
, लेकिन प्रदर्शन अभी भी धीमा है। CHARINDEX
इंडेक्सिंग से फायदा क्यों नहीं होता क्योंकि यह LIKE
क्वेरी करता है?
क्वेरी का उपयोग करना CHARINDEX
:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [Company].dbo.[customer]
WHERE ( Charindex('9000413237',[Company].dbo.[customer].[Phone no])>0 )
निष्पादन योजना:
क्वेरी का उपयोग करना LIKE
:
SELECT [customer].[Customer name],[customer].[Sl_No],[customer].[Id]
FROM [Company].dbo.[customer]
WHERE[Company].dbo.[customer].[Phone no] LIKE '%9000413237%'
निष्पादन योजना: