Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[MS SQL 2005] Index(en) op kolommen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

Ik zit met de volgende vraag. Welke setup is sneller/beter.

Ik heb een tabel met oa onderstaande 3 kolomen
Col 1 uniqueidentifier
Col 2 uniqueidentifier
Col 3 uniqueidentifier

Col 1 is niet uniek, Col 2 ook niet, Col 3 wel.
De tabel bevat plusminus 1 miljoen records, and growing.

Binnen de tabel wordt vaak gezocht op een combinatie van Col 1 en Col 3, ook op de combo Col 2 en Col 3, en ook vaak op Col 2.

Wat is nu beter?
1. Op elke kolom een Index (Clusterd/Non-Clusterd).
2. Een gecombineerde Index op alledrie de kolommen.
3. Of een andere oplossing :D

Alvast bedankt

Groet,
Sander

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 15:08

Dido

heforshe

Als Col3 uniek is, wat voor nut heeft zoeken op 1 en 3 of 2 en 3 dan?

Wat betekent mijn avatar?


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
Een clustered index op een unique-identifier is meestal geen goed idee. De clustered index bepaalt de fysieke opslagvolgorde; dat wil dus zeggen dat, als je GUID niet sequentieel is, je bij iedere insert een hele hoop I/O kunt verwachten. (page splits, re-ordering, etc.. )

Wat is de beste oplossing; moeilijk te zeggen. Een unique index op col3, Col2, col1 zou kunnen. (Aangezien col3 unique is, kan dit dus zonder probleem een unique index zijn.

Echter, deze index is niet interessant als je niet zoekt op col3 maar wel op col2 en / of col1. In dit geval zal de index dus niet gebruikt worden.
Als je enkel zoekt op col3, wordt ie wel gebruikt; als je zoekt op col3 & col2 wordt hij ook gebruikt, en als je zoekt op 3, 2 & 1 wordt hij ook gebruikt.
Ga eens na op welke velden je vooral zoekt.

En met dido trouwens.
In dat geval zou een unique index op col3 kunnen + een index op col2, col1

[ Voor 5% gewijzigd door whoami op 01-10-2007 12:07 ]

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:14
Je kan trouwens ook eens je applicatie laten lopen, en ondertussen een trace doen. De output van die trace kan je dan gebruiken in de 'index tuning wizard' oid (geen idee hoe dit heet in sql server 2005)

Hoort ei'k meer in PRG
-> PRG

[ Voor 77% gewijzigd door whoami op 01-10-2007 12:13 ]

https://fgheysels.github.io/


Verwijderd

Topicstarter
Dido schreef op maandag 01 oktober 2007 @ 11:57:
Als Col3 uniek is, wat voor nut heeft zoeken op 1 en 3 of 2 en 3 dan?
Is een beetje overerving uit het verleden. De persoon die het gemaakt heeft was van de hele oude stempel en wou alles snel en simpel. De meeste kolommen zijn niet nuttig of genormaliseerd, laat staan sommige queries :D
whoami schreef op maandag 01 oktober 2007 @ 12:13:
Je kan trouwens ook eens je applicatie laten lopen, en ondertussen een trace doen. De output van die trace kan je dan gebruiken in de 'index tuning wizard' oid (geen idee hoe dit heet in sql server 2005)

Hoort ei'k meer in PRG
-> PRG
Dit is ook een optie ware het niet dat de tracefile binnen 10 minuten al onhandelbaar wordt (voor een tuning-leek als ik :D). Deze groeit aardig de pan uit als ik hem laat lopen.

Maar misschien dat ik met de uitleg hierboven wel wat kan :D

THnx iig.