tag:blogger.com,1999:blog-456686155150137588.post5771534403971543062..comments2023-11-08T23:42:52.114+01:00Comments on Le blog Oracle d'Ahmed AANGOUR: Les histogrammes (1): IntroductionAhmed AANGOURhttp://www.blogger.com/profile/03378785645074450748noreply@blogger.comBlogger2125tag:blogger.com,1999:blog-456686155150137588.post-74682618042572180372015-12-03T22:25:07.396+01:002015-12-03T22:25:07.396+01:00Mohamed,
Merci pour ton commentaire. T'as tou...Mohamed,<br /><br />Merci pour ton commentaire. T'as tout à fait raison de relever ce point.<br />Néanmoins le but de cet article était d'introduire les histogrammes en mettant en évidence le fait que les colonnes skewed sans histogrammes (ni dynamic sampling) ne peuvent être bien estimées par le CBO. Dans mon exemple le nombre de valeurs distinctes de la colonne est le même que celui de l'index. Pour répondre à ta question il pourrait être intéressant de setter une valeur différente pour le NUM_DISTINCT de la colonne ou de l'index et de voir quelle serait la cardinalité estimée. Je crois que je vais essayer ça demain au boulot et je te tiendrai au courant ;-)Ahmed AANGOURhttps://www.blogger.com/profile/03378785645074450748noreply@blogger.comtag:blogger.com,1999:blog-456686155150137588.post-70157596212122611162015-12-03T20:39:36.648+01:002015-12-03T20:39:36.648+01:00Ahmed
Comment es tu sûr que dans le deuxième plan...Ahmed<br /><br />Comment es tu sûr que dans le deuxième plan (INDEX RANGE SCAN) que l'estimation E-Rows = 18 provient de la division num_rows/num_distinct(C_HB). En effet lorsque la where clause coïncide parfaitement avec les colonnes d'un index(comme dans ton cas ici) Oracle peut utiliser le distinct_keys de l'index :<br /><br />SQL> select <br /> num_rows * (1/distinct_keys) <br /> from <br /> user_indexes<br /> where <br /> table_name = 'T1'<br /> and <br /> index_name = 'IDX_HB';<br /><br />Bien Cordialement<br />Mohamed<br />Mohamed Hourihttps://www.blogger.com/profile/11687776847553675567noreply@blogger.com