Tables indexées. SAP 2013 Support Package 1
Bases de données
Il arrive fréquemment que deux tables différentes puissent être reliées à l'aide d'un champ commun.
C'est le cas, par exemple, lorsqu'une table Clients contient un champ ID client par client et une table
Commandes, un champ ID client pour chaque client ayant passé une commande. Les deux tables peuvent être reliées par l'intermédiaire de leur champ commun (voir
.
Le diagramme suivant montre les relations possibles entre deux tables :
23.1.2 Tables indexées
542 2013-09-26
Bases de données
543
L'indexation des tables de base de données permet à Crystal Reports de retrouver et d'évaluer plus rapidement les données. Certains SGBDR indexent automatiquement les tables de votre base de données, tandis que d'autres imposent une création manuelle. Si vous souhaitez obtenir de bonnes performances lors de la génération des rapports, vérifiez que chaque table est effectivement indexée.
Remarque :
Certains SGBDR ne prennent pas en charge les tables indexées. Consultez votre documentation pour savoir si votre SGBDR prend en charge les index, et le cas échéant, comment les créer. Si la documentation de votre SGBDR ne fait pas référence aux tables indexées, ces dernières ne sont probablement pas prises en charge. Vous devrez par conséquent relier les tables en fonction de champs communs. L'onglet Liens de l'Expert Base de données permet de déterminer si vos tables contiennent des index.
Les index organisent les enregistrements dans les tables de base de données relationnelles de telle sorte que les données soient plus faciles à rechercher. Prenons l'exemple d'une table contenant les données suivantes :
ID commande Client Montant
10444 Allez Distribution 25 141,50
10470
10485
BG Mountain Inc.
Sierra Mountain
19 164,30
8 233,50
10488
10495
10501
10511
Mountain Toad
SFB Inc.
La Bomba de Bicicleta
BG Mountain Inc.
24 580,50
7 911,80
1 956,20
1 683,60
10544
10568
10579
Sierra Bicycle Group
Mountain Tops Inc.
Sierra Bicycle Group
19 766,20
29 759,55
12 763,95
Les informations de cette table sont organisées en fonction du champ ID commande. Ceci ne pose pas de problèmes lorsque vous recherchez des informations dans cette table en fonction du numéro de
2013-09-26
Bases de données
544 commande. Cette méthode ne convient déjà plus, cependant, pour retrouver des informations concernant un client, par exemple.
Supposons que vous souhaitiez retrouver toutes les commandes passées par Sierra Bicycle Group.
Le pilote de la base de données examine le premier numéro de commande dans la liste et vérifie s'il correspond effectivement à une commande émanant de cette société. Si ce n'est pas le cas, il passe
à l'enregistrement suivant et compare le nom du client à celui que vous avez entré dans votre requête.
A chaque fois qu'il existe une concordance, le moteur extrait les informations et passe au numéro de commande suivant. Avec cette technique, l'ensemble des champs ID commande et Client de la table doit être lu. Ceci demande un certain temps et des ressources informatiques importantes lorsqu'une table comporte des milliers, voire des millions d'enregistrements.
Pour résoudre ce problème, indexez la table en fonction du champ Client. Ce type d'index peut se présenter de la façon suivante :
Client Pointeur vers ID commande
Allez Distribution 10444
BG Mountain Inc.
BG Mountain Inc.
10470
10511
La Bomba de Bicicleta
Mountain Toad
Mountain Tops Inc.
SFB Inc.
10501
10488
10568
10495
Sierra Bicycle Group
Sierra Bicycle Group
Sierra Mountain
10544
10579
10485
Dans cet index, les informations sont organisées par clients et non plus par ID de commande. Notez
également que la seconde colonne contient effectivement des pointeurs vers des ID de commande spécifiques de la table d'origine. Ainsi, l'index permettra au moteur de rechercher directement le nom qui vous intéresse (Sierra Bicycle Group) dans la colonne Client.
2013-09-26

Link público atualizado
O link público para o seu chat foi atualizado.