Amélioration des performances dans les mises en relation de type un-à-plusieurs. SAP 2013 Support Package 1
Bases de données
Lorsque les enregistrements de deux tables reliées sont unis par des relations de type un-à-plusieurs,
à chaque enregistrement de la table principale correspondent un ou plusieurs enregistrements dans la table de recherche, déterminés sur la base de champs de mise en relation. Par exemple, dans
Xtreme.mdb (l'exemple de base de données livré avec Crystal Reports), la table Clients peut être reliée
à la table Commandes via leur champ commun ID client. La table Clients contient des informations sur chaque client ayant passé une commande. La table Commandes contient des informations sur les commandes passées par les clients. Chaque client pouvant passer plusieurs commandes, il est possible que la table Commandes contienne plusieurs enregistrements correspondant à un même enregistrement de la table Clients. Nous sommes donc bien en présence d'une relation de type un-à-plusieurs.
23.5.3 Amélioration des performances dans les mises en relation de type un-à-plusieurs
Les informations fournies dans cette section permettent d'optimiser la vitesse de traitement et de réduire au maximum le trafic réseau lors de la création de rapports. Vous apprendrez à tirer parti des formules de sélection et des index dans un environnement un-à-plusieurs pour rationaliser le reporting. Si vous ne suivez pas les conseils donnés ci-dessous, vous risquez de produire des rapports traitant beaucoup plus d'enregistrements que nécessaire.
Lorsque deux tables de base de données font l'objet d'une mise en relation de type un-à-plusieurs, le nombre d'enregistrements examinés pendant la comparaison de leur contenu dépend de plusieurs facteurs.
Les tables suivantes montrent les effets de ces différents facteurs sur le nombre d'enregistrements réellement lus. Ils sont basés sur le scénario suivant :
• La table A contient 26 enregistrements (une pour chaque lettre de l'alphabet).
• La Table B contient 2 600 enregistrements (100 enregistrements pour chaque enregistrement de la Table A).
• Le scénario consiste à créer un rapport permettant de trouver deux enregistrements spécifiques dans la Table A et les 200 enregistrements (100+100) de la table B correspondant aux deux enregistrements de la Table A.
Dans le meilleur des cas, le programme ne lit que 200 enregistrements environ pour accomplir cette tâche.
Dans le pire des cas, le programme doit lire environ 67 600 enregistrements pour accomplir cette tâche.
Remarque :
Les facteurs de performance des fichiers de données sont différents de ceux des bases de données
SQL. Par fichier de données, nous entendons tout fichier non SQL accessible directement depuis
Crystal Reports. Par base de données SQL, nous entendons toute base de données acceptant des commandes SQL et accessible directement (ou via ODBC) depuis Crystal Reports, ainsi que les autres bases accessibles via ODBC.
560 2013-09-26
Bases de données
561
Pour mieux comprendre la différence entre les bases de données d'accès direct et les sources de données ODBC, reportez-vous au chapitre Accès aux sources de données de l'aide en ligne.
23.5.3.1 Description détaillée des colonnes de diagramme
Les diagrammes de performances reproduits ci-dessous utilisent les colonnes suivantes :
• Mise en relation ou sous-rapport
Créez-vous un rapport à partir de bases de données reliées ou insérez-vous un sous-rapport que vous reliez aux données de votre rapport principal ?
• Formule de sélection
Votre rapport principal inclut-il une formule de sélection définissant une plage de valeurs pour le champ clé (indexé) de la Table A ?
• Index A
La Table A est-elle indexée sur le champ que vous comptez utiliser pour mettre en correspondance ces enregistrements ?
• Index B
La Table B est-elle indexée sur le champ que vous comptez utiliser pour mettre en correspondance ces enregistrements ?
• Lectures dans A
Combien d'enregistrements le logiciel devra-t-il lire dans la Table A pour trouver les deux enregistrements recherchés ?
• Lectures dans B pour chaque A
Combien d'enregistrements le logiciel devra-t-il lire dans la Table A pour trouver les 200 enregistrements recherchés ?
• Total des enregistrements lus
Quel est le nombre total des enregistrements que le logiciel a dû lire pour exécuter la tâche ?
Données PC
Mise en relation/Sousrapport
Formule de sélection
Index A Index B
Lectures dans A
Lectures dans B pour chaque A
Total des enregistrements lus
Mise en relation
Non Oui ou Non Oui 26
100
(26*100)
2 600
2013-09-26
Bases de données
Mise en relation/Sousrapport
Formule de sélection
Index A
Mise en relation
Oui Non
Mise en relation
Oui Oui
Sous-rap port
Sous-rap port
Sous-rap port
Sous-rap port
Sous-rap port
Sous-rap port
Non
Non
Non
Oui
Oui
Oui
Non
Oui
Oui
Non
Non
Oui
Oui
Non
Non
Oui
Non
Oui
Oui
Index B
Oui
Lectures dans A
Lectures dans B pour chaque A
Total des enregistrements lus
26
100
(26*100)
2 600
2
26
2
26
2
26
2
100 (2*100)
2 600
(26*2 600)
2 600
(26*2 600)
100
(26*100)
2 600
(2*2 600)
100
(26*100)
100 (2*100)
200
67 600
67 600
2 600
5 200
2 600
200
Données SQL
Mise en relation/Sous-rapport
Formule de sélection
Lectures dans A
Lectures dans B pour chaque A
Total des enregistrements lus
Mise en relation Non 26 100 (26*100) 2 600
Mise en relation Oui 2 100 (2*100) 200
562 2013-09-26

Публичная ссылка обновлена
Публичная ссылка на ваш чат обновлена.