Database Tuning Advisor – hypothetical ?

Oopps! Upgrade your browser pretty please. Oopps! Upgrade your browser pretty please.

Ibland kan vi rätt tydligt se att man har använts SQL Servers Database Tuning Advisor för att skapa index. Detta eftersom man inte ändrat de föreslagna namnen på index  som börjar på _dta_index_. Rekommendation från Microsoft är att alltid ändra dessa namn vilket jag också håller med om. Vad säger t.ex “..K1_K18_K169_2_13_99876 ?”.

Det som också kan hända är att det finns rester kvar från när man kört DTA. Normalt rensas dessa objekt, men så är inte alltid fallet. Häromdagen upptäckte jag t.ex. av ca 1700 index på en databas från en känd programleverantör var över 1000 av dem sk “hypothetical” index. Dessa index måste man plocka bort manuellt och kod för detta hittar ni nedan. Även om dessa index inte tar någon plats kan det försämra prestandan och ingen vill väl ha skräp i databasen ?.

SELECT  DB_NAME() AS Database_name ,
        o.name Object_Name ,
        SCHEMA_NAME(o.schema_id) Schema_name ,
        i.name Index_name ,
        i.Type_Desc ,
        o.object_id ,
        'DROP INDEX [' + OBJECT_NAME(i.[object_id]) + '].[' + i.[name] + ']'
FROM    sys.objects AS o
        JOIN sys.indexes AS i ON o.object_id = i.object_id
WHERE   o.type = 'U'
        AND i.type IN ( 1, 2 ) -- 1 = Clustered 2 = NonClustered 
		AND is_hypothetical = 1 
ORDER BY Database_name, Object_Name , Schema_name , Index_name