183
6.4 Statistiques
GO
CREATE UNIQUE CLUSTERED INDEX cix$Person_SomeContacts
ON Person.SomeContacts (ContactID)
CREATE NONCLUSTERED INDEX nix$Person_SomeContacts$LastName_FirstName
ON Person.SomeContacts (LastName, FirstName)
GO
SELECT FirstName, LastName
FROM Person.Contact
WHERE LastName LIKE '%Ad%'
Le plan d’exécution généré est simple, un scan... mais de quel index ? Voici le
plan :
|--Index Scan(OBJECT:([AdventureWorks].[Person].[SomeContacts].
[nix$Person_SomeContacts$LastName_FirstName]))
6.4 STATISTIQUES
Vous avez fait la connaissance sur un chat Internet d’une jeune fille qui vous semble
charmante et qui vit à Courtrai, en Belgique flamande. Elle semble apprécier vos
grandes qualités de cœur et vous convenez d’un premier rendez-vous, afin de vous
connaître en vrai. Comme vous êtes galant, vous proposez de faire le voyage à Courtrai. Elle vous donne rendez-vous au café De Brouwzaele.
Si vous n’avez jamais entendu parler de Courtrai, vous ne savez probablement
rien de la taille de la ville, de la complexité de ses rues et donc vous ne pouvez pas
juger, avant de vous y rendre, si vous trouverez le café De Brouwzaele facilement.
Logiquement, votre premier réflexe sera de vous renseigner sur le nombre d’habitants. Si Courtrai est une ville de quelques milliers d’âmes, vous pouvez vous dire
qu’elle est peu étendue et que le café De Brouwzaele sera facile à trouver. Par contre,
en cherchant sur Wikipédia, vous vous apercevez que Courtrai compte quelque
73 000 habitants. Sachant cela, vous vous attendez à plus de difficultés. Vous allez
donc demander l’adresse du café De Brouwzaele. Kapucijnestraat 19… bien, mais,
combien y a-t-il de rues à Courtrai, et où se trouve Kapucijnestraat par rapport à la
gare ? La connaissance de ces détails risque d’influencer fortement votre méthode de
déplacement.
Pour SQL Server, la problématique est exactement la même. Imaginons que nous
envoyons cette requête :
SELECT *
FROM Production.TransactionHistory
WHERE ProductId = 800
La première chose que sait SQL Server, c’est qu’il y a 113 443 lignes dans la table
Production.TransactionHistory (dans ce cas, il maintient un compte de lignes dans
6.4 Statistiques
GO
CREATE UNIQUE CLUSTERED INDEX cix$Person_SomeContacts
ON Person.SomeContacts (ContactID)
CREATE NONCLUSTERED INDEX nix$Person_SomeContacts$LastName_FirstName
ON Person.SomeContacts (LastName, FirstName)
GO
SELECT FirstName, LastName
FROM Person.Contact
WHERE LastName LIKE '%Ad%'
Le plan d’exécution généré est simple, un scan... mais de quel index ? Voici le
plan :
|--Index Scan(OBJECT:([AdventureWorks].[Person].[SomeContacts].
[nix$Person_SomeContacts$LastName_FirstName]))
6.4 STATISTIQUES
Vous avez fait la connaissance sur un chat Internet d’une jeune fille qui vous semble
charmante et qui vit à Courtrai, en Belgique flamande. Elle semble apprécier vos
grandes qualités de cœur et vous convenez d’un premier rendez-vous, afin de vous
connaître en vrai. Comme vous êtes galant, vous proposez de faire le voyage à Courtrai. Elle vous donne rendez-vous au café De Brouwzaele.
Si vous n’avez jamais entendu parler de Courtrai, vous ne savez probablement
rien de la taille de la ville, de la complexité de ses rues et donc vous ne pouvez pas
juger, avant de vous y rendre, si vous trouverez le café De Brouwzaele facilement.
Logiquement, votre premier réflexe sera de vous renseigner sur le nombre d’habitants. Si Courtrai est une ville de quelques milliers d’âmes, vous pouvez vous dire
qu’elle est peu étendue et que le café De Brouwzaele sera facile à trouver. Par contre,
en cherchant sur Wikipédia, vous vous apercevez que Courtrai compte quelque
73 000 habitants. Sachant cela, vous vous attendez à plus de difficultés. Vous allez
donc demander l’adresse du café De Brouwzaele. Kapucijnestraat 19… bien, mais,
combien y a-t-il de rues à Courtrai, et où se trouve Kapucijnestraat par rapport à la
gare ? La connaissance de ces détails risque d’influencer fortement votre méthode de
déplacement.
Pour SQL Server, la problématique est exactement la même. Imaginons que nous
envoyons cette requête :
SELECT *
FROM Production.TransactionHistory
WHERE ProductId = 800
La première chose que sait SQL Server, c’est qu’il y a 113 443 lignes dans la table
Production.TransactionHistory (dans ce cas, il maintient un compte de lignes dans
