2010-11-13 4 views
2

Je suis en train d'optimiser les index dans une base de données SQL Server 2008 sur laquelle je travaille. En ce moment je suis sur la table "centrale".Index multiples vs forçage des analyses de table

Cette table est jointe sur 7 colonnes. Il a aussi une clé primaire (bien sûr), plus une datation que j'ai indexée dans l'ordre DESC. En raison de la nature des jointures, je crois que 6 index sont requis (certaines des jointures sont à des tables de cardinalité ultra basse ou ne seront pas interrogées).

Cependant, cette table est fortement écrite. La performance va être mauvaise avec 6 indices (et 1 est un index à 2 colonnes). Les requêtes peuvent être exécutées sur la plupart des tables jointes, donc je ne vois pas comment je peux supprimer des index.

Est-ce que quelqu'un connaît une bonne pratique pour déterminer comment équilibrer le nombre d'index?

Mise à jour:

Voici les colonnes d'intérêt dans le tableau:

MentionID  int    primary key 
ParentID   int    indexed 
ProfileID  int    indexed 
SourceCategoryID tinyint   indexed with next column 
SourceID   int 
RoleplayerID  int    indexed 
DateStamp  smalldatetime indexed DESC 
Subject  nvarchar(1000) 
KeyMessage  nvarchar(1000) 
SentimentID tinyint   unindexed: low cardinality 
ScopeID  tinyint   unindexed: low cardinality 
+0

Comment avez-vous arrivés à la conclusion: "Je crois que 6 indices est nécessaire"? –

Répondre

1

Une seule « meilleure pratique »: essayer de mesurer, mesurer, mesurer et mesurer à nouveau.

Il n'y a aucun moyen théorique de savoir comment ces indices supplémentaires affecteront vos performances - vous devez essayer et voir.

Une approche qui pourrait aider est décrite dans les moindres détails par Kimberly Tripp dans hear blog blog, Spring cleaning your indexes. Cela ne vous donne pas vraiment de règles sur la façon de savoir combien d'indices utiliser - mais il vous donne des méthodes et des astuces pour savoir quels index ne peuvent pas être utilisés du tout - ceux-ci peuvent être lancés pour accélérer votre traitement. De l'autre côté: SQL Server a également un DMV pour vous dire quels indices il pense serait bénéfique et aiderait à accélérer vos requêtes - inspecter ce DMV de temps en temps pour voir ce que l'optimiseur de requêtes SQL Server aimerait avoir ajouté; Si cela correspond aux indices que vous étiez sur le point de créer, vous êtes probablement sur la bonne voie!

+0

Accordée. À l'autre extrémité du spectre, où les tableaux sont petits, il y a des règles. J'ai pensé qu'il pourrait y avoir des règles ou au moins des lignes directrices sur cette extrémité du spectre. – IamIC

+1

@IanC: mis à jour ma réponse avec quelques conseils supplémentaires, des conseils, des conseils –

+1

merci beaucoup! – IamIC

Questions connexes