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

निरर्थक सूचकांक खोजने के लिए टी-एसक्यूएल

ऐसी स्थितियां हैं जहां अतिरेक धारण नहीं करता है। उदाहरण के लिए, ColumnC . कहें एक विशाल क्षेत्र था, लेकिन आपको कभी-कभी इसे जल्दी से पुनः प्राप्त करना होगा। आपका index 1 इसके लिए एक महत्वपूर्ण खोज की आवश्यकता नहीं होगी:

select ColumnC from YourTable where ColumnnA = 12

दूसरी ओर index 2 बहुत छोटा है, इसलिए इसे उन प्रश्नों के लिए स्मृति में पढ़ा जा सकता है जिनके लिए अनुक्रमणिका स्कैन की आवश्यकता होती है:

select * from YourTable where ColumnnA like '%hello%'

तो वे वास्तव में बेमानी नहीं हैं।

यदि आप मेरे उपरोक्त तर्क से आश्वस्त नहीं हैं, तो आप "अनावश्यक" अनुक्रमणिका पा सकते हैं जैसे:

;with ind as (
    select  a.object_id
    ,       a.index_id
    ,       cast(col_list.list as varchar(max)) as list
    from    (
            select  distinct object_id
            ,       index_id
            from    sys.index_columns
            ) a
    cross apply
            (
            select  cast(column_id as varchar(16)) + ',' as [text()]
            from    sys.index_columns b
            where   a.object_id = b.object_id
                    and a.index_id = b.index_id
            for xml path(''), type
            ) col_list (list)
)
select  object_name(a.object_id) as TableName
,       asi.name as FatherIndex
,       bsi.name as RedundantIndex
from    ind a
join    sys.sysindexes asi
on      asi.id = a.object_id
        and asi.indid = a.index_id
join    ind b
on      a.object_id = b.object_id
        and a.object_id = b.object_id
        and len(a.list) > len(b.list)
        and left(a.list, LEN(b.list)) = b.list
join    sys.sysindexes bsi
on      bsi.id = b.object_id
        and bsi.indid = b.index_id

प्रदर्शन "अप्रत्याशित रूप से" घटने की स्थिति में अपने उपयोगकर्ताओं के लिए केक लाएं :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर कार्य स्वचालन की मूल बातें

  2. SQL सर्वर में फॉर-लूप का सिंटैक्स

  3. SQL सर्वर में समूहीकृत संयोजन

  4. T-SQL का उपयोग करके SQL सर्वर में एक विदेशी कुंजी का नाम बदलें

  5. मैं एक एसक्यूएल सर्वर 2008 डेटटाइम ऑफसेट को डेटटाइम में कैसे परिवर्तित कर सकता हूं?