Avatar billede isl19960 Nybegynder
03. april 2007 - 09:47 Der 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 ?

Mvh.

Brian
Avatar billede isl19960 Nybegynder
03. april 2007 - 14:45 #1
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...
Avatar billede arne_v Ekspert
04. april 2007 - 02:27 #2
Forsvinder al garanti ikke hvis du retter i database strukturen ?
Avatar billede isl19960 Nybegynder
04. april 2007 - 12:31 #3
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 ;)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester