|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |
|
Membre confirmé
![]() Inscription : octobre 2006 Messages : 440 ![]() |
Bonjour,
Je souhaite avoir une définition exacte de la sélectivité et la cardinalité, car j'ai du mal à voir la différence en suivant celles fournies par Oracle : Citation:
Code :
SELECT count(*) FROM Mon_Objet WHERE col = 'value' / SELECT count(*) FROM Mon_Objet Si vous aviez un exemple concret, ça m'aiderait bien. Merci d'avance. |
|
|
|
00
|
|
|
#2 | ||
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
La cardinalité c'est tout simplement le nombre de lignes d'un ensemble de lignes qui peut être le résultat d'une requête ou une étape intermédiaire d'un plan d'exécution d'une requête. La sélectivité est donc un rapport de cardinalités.
Dans votre exemple, c'est: Code :
|
||
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : octobre 2006 Messages : 440 ![]() |
Merci Pierre, donc pour la sélectivité, si
Code :
SELECT count(*) FROM Mon_Objet WHERE col = 'value' etrenvoie 100 lignes La sélectivité est de Pour la cardinalité, c'est donc 10 ? Merci pour votre aide. |
|
|
00
|
|
|
#4 |
|
Expert Confirmé
![]() Inscription : février 2006 Messages : 3 433 ![]() |
Vous pouvez trouver une définition qui lie sélectivité et cardinalité dans Troubleshooting Oracle Performance page 13 (lisible sur Google Books):
num_rows est le nombre de lignes traitées en entrée, cardinalité est le nombre de lignes en sortie, ceci pour une opération donnée. Dans votre exemple l'opération est accès à une table avec un filtre WHERE col='value', num_rows=100 et sélectivité = 0,10 donc cardinalité = 10. Voir aussi http://asktom.oracle.com/pls/asktom/...40230704959128 |
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : octobre 2006 Messages : 440 ![]() |
Merci Pierre.
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com