Search

onze sponsors

microsoft_logo.gif


 

computrain_logo.JPG

Forum Login | Register
   Forum

 

Subject: SQL 2005 Create Index with Include Option?
Prev Next
You are not authorized to post a reply.

Author Messages
Arjan FraaijUser is Offline

Posts:110

25-10-2007 08:26:35 Alert 
Hallo,

Voor een klant wordt aangegeven om over te gaan op SQL2005 vanwege performance problemen met SQL2000.
De aangegeven reden dat zij zouden moeten overstappen is dat SQL2005 de include option ondersteund bij het aanmaken van een index.

CREATE NONCLUSTERED INDEX [Index] ON [dbo].[tabel]
([A],[B])
INCLUDE ([C],[D])

Wie heeft hier ervaring mee?
Wat levert het op?
Zijn er nadelen aan verbonden?

MvG,
Arjan

Markus BohseUser is Offline

Posts:19

25-10-2007 11:27:50 Alert 
Het lijkt me erg onwaarschijnlijk dat alleen de mogelijkheid voor indexes met included columns de performance problemen gaat oplossen.
De idee achter included columns is dat je makkelijker een covering index kan creeeren terwijl niet de included columns niet onderdeel van de sortering zijn en dus ook niet aan fragmentatie bijdragen.

Je zou in SQL 200 ook al een index kunnen aanmaken die alle 4 kolommen bevat, met als enige verschil dat wanneer de columnen 3 en 4 vaak gewijzigd worden, dat je beter een lagere Fillfactor kan kiezen om fragmentatie te voorkomen.

De belangrijkste vraag is denk ik of het mogelijk is om covering indexes te creeeren voor al de queries die nu performance problemen veroorzaken. Queries die meer dan 4 of 5 kolommen opvragen komen hiervoor bijna niet in vraag, omdat de extra kosten voor opslag in mijn ogen te groot worden.
Misschien kan je wat meer vertellen over wat voor performance problemen zich voordoen. Zijn het maar enkele queries of is er meer aan de hand.
In het laaste geval zijn included columns zeker niet de oplossing.
Markus

Arjan FraaijUser is Offline

Posts:110

25-10-2007 12:48:48 Alert 
Markus,

Bedankt voor je reactie, mijn idee was inderdaad ook al waarom de additionele kolommen ook niet in de SQL2000 Index op te nemen. Wat is het verschil tussen dit te doen in SQL 2000 of de INCLUDE van SQL2005?

Is het soms zo dat wanneer je een Unique Clusterd Index creeërt met de include optie dat de included kolommen niet per definitue uniek hoeven te zijn in de record regel? Ben even te lui om op MSDN naar de beschrijving van include te kijken.

Het advies om over te stappen naar SQL 2005 is op meerdere punten gebaseerd (memory enhancement ed) echter dit punt word als een van de mean reasons aangegeven. Mijn gedachte was inderdaad ook al wat Markus aangaf om de SQL2000 indexes uit te breiden.

Gr,
Arjan
Hugo KornelisUser is Offline

Posts:46

01-11-2007 20:21:37 Alert 
Hoi Arjan,

Het belangrijkste voordeel van INCLUDE ten opzichte van gewoon extra kolommen in de index, is dat bij INCLUDE het maximum van 900 posities in de index niet meer telt en dat je zelfs "grote" datatypes (xml, varchar(max), etc) kunt opnemen. Daarnaast heb je een hele kleine besparing op de ruimte in de intermediate levels van de index structuur, maar dat is zo weinig dat het amper de moeite waard is. De opmerking van Markus over minder fragmentatie als de included columns geregels wijzigen is wel terecht.

Wat betreft UNIQUE of NONUNIQUE - als je in een bestaande UNIQUE index een extra kolom toevoegt blijft de index altijd UNIQUE; als je aan een NONUNIQUE index een kolom toevoegt kán de index UNIQUE worden.

Met vriendelijke groeten,

Hugo Kornelis (SQL Server MVP)
Arjan FraaijUser is Offline

Posts:110

02-11-2007 08:25:14 Alert 
Hallo Hugo,

Bedankt voor je reactie, maakt het voor mij weer wat duidelijker.

Gr,
Arjan
You are not authorized to post a reply.
Forums > Forums > Performance (SIG) > SQL 2005 Create Index with Include Option?



ActiveForums 3.6
  
Copyright (c) 2012 PASS Nederland   Privacy Statement  Terms Of Use