03. april 2007 - 09:47Der er
2 kommentarer og 1 løsning
Samkøring af 3 forespørgsler
Hejsa,
Jeg er igang med at ville rydde lidt op i de index der ikke bliver benyttet på vores SQL 2005 navision-database.
I den forbindelse har jeg fundet frem til lidt forskellige scripts, der kan pege mig hen på ubenyttede index.
Først finder jeg index der ikke bliver brugt:
SELECT * FROM sys.dm_db_index_usage_stats WHERE user_seeks = 0 AND user_scans = 0 AND user_lookups = 0 ORDER BY user_updates DESC
Her kan jeg så se 'object_id' og 'index_id'.
For at finde tabel-navnet, kan jeg bruge følgende script:
SELECT DISTINCT OBJECT_NAME(1050135182) FROM master.sys.objects
For at finde navnet på index, kan jeg bruge følgende script:
SELECT name FROM sys.indexes WHERE object_id = 1050135182 AND index_id = 5
Se, det er jo alt sammen meget godt - jeg kan finde frem til det jeg gerne vil - men det er jo en kende besværligt at skulle køre 3 scripts.
Er der en venlig sjæl, som kan hjælpe mig med at få bygget de 3 forespørgsler sammen, således at jeg får den første forespørgsel, men med tabel-navn og index-navn fundet frem i samme hug ?
okay - jeg fik sådan set selv bakset noget sammen her... :-)
SELECT OBJECT_NAME(S.object_id) AS tabel_navn, I.name AS index_navn, user_updates AS antal_updates FROM sys.dm_db_index_usage_stats AS S INNER JOIN sys.indexes AS I ON S.object_id = I.object_id AND S.index_id = I.index_id WHERE (S.user_seeks = 0) AND (S.user_scans = 0) AND (S.user_lookups = 0) ORDER BY S.user_updates DESC
Den returnerer Tabelnavn, indexnavn og antal updates sorteret på antal.
Iøvrigt en forespørgsel andre måske kunne bruge til at optimere på indexes...
Nu ved jeg ikke lige om man kan kalde et index for direkte struktur...
... men planen er at disable indexet fra navision og så sætte en KeyGroup på. På den måde er det nemt at slå det hele til igen, hvis det skulle vise sig at være noget skidt - og så bliver alle index automatisk oprettet igen på SQL'en.
Kører man min kode får man jo også kun de index som overhovedet ikke er brugt - det er en anden sag, hvis man begynder på dem som kun er brugt lidt.
... og så er der forøvrigt vigtigt at huske at tællerne bliver nulstillet ved genstart af database-service, så man skal helst ha' haft den kørende i et godt stykke tid, før man kan begynde at konkludere på tallene...
Iøvrigt er min plan blevet til, i samråd med vores eksterne konsulent fra et større softwarehus, så den skulle være god nok ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.