Avatar billede horizon Nybegynder
27. maj 2011 - 18:08 Der er 3 kommentarer og
1 løsning

Spørgsmål til Clustered Indexes

Jeg sidder lige og leger med denne tutorial
(http://msdn.microsoft.com/en-us/windowsazure/wazplatformtrainingcourse_introtosqlazureforvs2010developers_topic3) og er nået til task 5 hvor man ser execution plan for et select statement.

Herefter skal man indsætte 10000 rækker og derefter køre samme select statement igen for at se den nye execution plan.

Så står der man skal sammenligne de to execution plans, men jeg er ikke helt sikker på hvad jeg skal sammenligne. Er der nogen herinde der evt. er så flink at forklare hvad (og mere vigtigt hvorfor) det er, der sker fra figur 30 til 31?

For hvis jeg kører select statementet igen, så får jeg samme resultat som i figur 30. Er det fordi første query efter de 10000 inserts bruges til sortering eller hvad er det der sker?

Jeg har googlet de sidste par timer omkring dette, men kan ikke finde noget om det (eller ved ikke hvad jeg skal søge efter).

Jeg skal bruge dette til en opgave der skal afleveres på tirsdag, så ville sætte stor pris på svar. :D
Avatar billede Syska Mester
27. maj 2011 - 18:17 #1
Lader til at de mener forskellen er:
Index Scan vs Index Seek

Grunden til at den vælger scan første gang er nok er meget få rows i den table.

Hvormod efter du har indsat 10k rows, så kan den med fordel bruge dit index til at finde den bruger.

mvh
Avatar billede Syska Mester
27. maj 2011 - 18:19 #2
Se det som et opslagsvæk ...

I en telefon bog, hvis der kun var 1 person i den, så er det hurtigere at undgå at første søge i index, og derefter slå personen op.

Modsat ... har du 10k rows, så er det hurtigre at kigge i index for at finde side nummer, og derefter slå op.

Tror lidt det er hvad de prøver at forklare ... uden dog at være sikker.

mvh
Avatar billede horizon Nybegynder
27. maj 2011 - 19:09 #3
Ah! Er det "bare" det? :D hvorfor filan skrev de ikke bare det til at starte med? Nu har jeg siddet og fattet minus i flere timer over det.

Smid et svar og få dine point :D
Avatar billede Syska Mester
27. maj 2011 - 22:58 #4
Jeg kan ikke se andre forskelle.

Men husk det er det ikke non-clustered som bliver brugt.

CREATE INDEX IX_Contact_EmailAddress ON Contact(EmailAddress)

Som derefter lave en bookmark lookup for at få fat i resten af dataen. Dog står det her skrevet på en måde så der måske kan forekomme flere end en af samme email. Da den ikke er unique.

Men generelt tror jeg det er det eneste de vil, omend jeg heller ikke helt forstår hvorfor de skriver det på den måde. Og hvad meningen er med det.

mvh
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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