Question

Utilisation: SQL Server 2008 R2

Je quitte actuellement à travers un plan d'exécution de la requête, et je suis venu dans une instance d'une mise à jour d'index ordonné en clusters sur une table. Le problème ici est que les colonnes qui sont mises à jour sont pas partie de l'index ordonné en clusters.

Tableau:

<table>
    id INT IDENTITY(1,1) -- Clustered Index
    , name VARCHAR(20) -- Nonclustered Index
    , status CHAR(1)
    , quantity INT 
    , price FLOAT

Déclaration de mise à jour:

UPDATE a
SET a.status = @status
    , a.quantity = @quantity
    , a.price = @price
FROM <table> a
WHERE a.name = @name

Le plan d'exécution montre une bobine Désireuse à 36% des coûts, une mise à jour index en cluster à 55% des coûts, et une recherche d'index sur l'index de nom à 9%, parmi les articles Compute Scalar et Top à 0% coût.

Pourquoi le plan montrant une mise à jour d'index ordonné en clusters? Que pouvais-je faire pour éviter cela, et d'empêcher la bobine avide?

Était-ce utile?

La solution

Quand vous avez un index ordonné en clusters sur une table, l'index ordonné en clusters est la table!

Mentalement vous pouvez remplacer « table » pour « index cluster » dans ce cas et il sera logique.

Les données pour chaque champ dans chaque ligne est votre index ordonné en clusters. L'index ordonné en clusters définit simplement l'ordre des pages physiques dans la base de données organisée par votre clé de cluster (s).

Vous pouvez toujours retomber sur l'analogie de l'annuaire téléphonique pour ces choses aussi: dans votre annuaire téléphonique classique, les données sont regroupées sur Last Name, First Name. Chaque entrée a encore PhoneNum, Address au niveau des feuilles, mais vous ne commandez pas par là. Les pages sont en ordre physique par les touches.

Je ne peux pas donner des conseils sur l'optimisation de la requête à moins que vous nous montrez la table et la requête que vous utilisez, mais essentiellement ce coût sera payé d'une façon ou d'une autre. Si vous ne mettez pas à jour l'index cluster, il sera une mise à jour de table et une analyse de table.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top