> Data > Plus de distorsion de données

Plus de distorsion de données

Data - Par iTPro.fr - Publié le 24 juin 2010
email

par Dusan Petkovic et Christian Unterreitmeier - Mis en ligne le 09/07/2002
Des données faussées peuvent affecter le plan d'exécution des requêtes contenant un prédicat et de celles contenant une opération de jointure. Apprennez à  tenir compte de la distorsion des données pendant la conception de la base de données ...

Les colonnes d'une table représentent généralement les propriétés d'entités concrètes comme des noms d'employés et de produits. Quand votre requête contient un prédicat - une clause WHERE contenant des critères de recherche - incluant une colonne, l'optimiseur de requêtes SQL Server peut trouver les données correspondantes à  la requête de deux manières différentes : balayage de table ou accès par index. Dans un balayage de table, l'optimiseur lit séquentiellement toutes les lignes d'une table et compare chacune d'elle aux critères de recherche de la clause WHERE. SQL Server décide en général de balayer toute la table quand la requête sélectionne un nombre significatif de lignes de la table. L'optimiseur de requêtes opte plutôt pour l'accès par index quand un index de colonne (clustered ou nonclustered) existe. Utiliser ou non l'index existant dépend de nombreux facteurs différents.

Plus de distorsion de données

Si l’optimiseur de requêtes doit
choisir le mode d’accès à  une colonne
contenant des valeurs non uniques, la
distribution de valeurs distinctes pour
la colonne au travers des lignes d’une
table devient un facteur important.
Supposons que votre entreprise stocke
tous les noms de clients dans la table
customers, incluant deux clients nommés
gender et country. Supposons
également que l’entreprise soit principalement
implantée en Amérique du
Nord et que la colonne country ait 10
valeurs distinctes. Si 70 % des clients
habitent aux Etats-Unis, 10 % au
Canada, 5 % au Mexique et 0,05 % en
Allemagne, les valeurs distinctes dans
la colonne country ne sont pas distribuées
uniformément sur les lignes de
la table customers. Dans cet exemple,
les données de la colonne country sont
faussées parce que les valeurs de cette
colonne (Etats-Unis, Canada, Mexique,
Allemagne, etc.) apparaissent dans les
lignes de la table customers avec des
fréquences très différentes. A l’inverse,
la colonne gender contient à  peu près
le même nombre d’hommes et de
femmes, donc les données de cette colonne
ne sont pas faussées. Voyons des
instructions SELECT différentes pour
voir comment l’optimiseur de requêtes
choisit de sélectionner le jeu de
résultats dans des situations différentes
dans lesquelles la colonne de
données faussées se trouve dans le
prédicat WHERE. Au préalable, il faut
écrire une instruction T-SQL qui crée la
table customers, illustrée dans le
listing 1. Vous pourrez ensuite utiliser
le batch que le listing 2 montre
pour charger 10.000 lignes dans cette
table.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis, conseils d'experts, témoignages clients, ainsi que les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et Collaboration, Impression et Infrastructure.

Data - Par iTPro.fr - Publié le 24 juin 2010