{"id":311,"date":"2016-02-21T23:14:50","date_gmt":"2016-02-22T02:14:50","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=311"},"modified":"2019-11-11T19:01:21","modified_gmt":"2019-11-11T22:01:21","slug":"qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/","title":{"rendered":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O Otimizador baseado em custo (CBO) utiliza estat\u00edsticas para determinar o custo dos diversos planos de execu\u00e7\u00e3o que ele produz para uma determinada instru\u00e7\u00e3o SQL e escolhe o plano com o menor custo para utilizar, portanto as informa\u00e7\u00f5es estat\u00edsticas s\u00e3o cruciais na escolha do plano de execu\u00e7\u00e3o e devem fornecer informa\u00e7\u00f5es precisas e atualizadas para que o Otimizador consiga realizar um bom trabalho.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Num artigo anterior abordamos a <strong><a href=\"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-tabelas-para-o-otimizador\/\" target=\"_blank\">import\u00e2ncia das estat\u00edsticas de tabelas<\/a><\/strong> para Otimizador, neste artigo vamos abordar como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador na de cria\u00e7\u00e3o de um plano de execu\u00e7\u00e3o para uma determinada instru\u00e7\u00e3o SQL.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">COLUMN STATISTICS<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">As informa\u00e7\u00f5es estat\u00edsticas de colunas podem ser consultadas na vis\u00e3o USER_TAB_COLUMNS, existem muitos informa\u00e7\u00f5es dispon\u00edveis nessa vis\u00e3o mas os campos mais importantes para o Otimizador s\u00e3o:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\"><strong>NUM_DISTINCT<\/strong> &#8211; N\u00famero de valores distintos em uma determinada coluna<\/span><br \/>\n<span style=\"font-size: 12pt;\"><strong>DENSITY<\/strong>\u00a0 \u00a0 \u00a0  &#8211; Algoritmo para estimar a seletividade de uma coluna, formula: 1\/num_distinct para colunas sem histogramas<\/span><br \/>\n<span style=\"font-size: 12pt;\"><strong>NUM_NULLS<\/strong>\u00a0 \u00a0 \u00a0&#8211; N\u00famero de linhas na tabela que uma determinada coluna tem o valor nulo<\/span><br \/>\n<span style=\"font-size: 12pt;\"><strong>HISTOGRAM<\/strong>\u00a0 \u00a0 \u00a0&#8211; Indica a exist\u00eancia ou tipo de histograma para uma determinada coluna<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Neste artigo vamos considerar a coluna HISTOGRAM=NONE, ou seja n\u00e3o existe histogramas para essa coluna, vamos abordar a utiliza\u00e7\u00e3o de histogramas pelo Otimizador num futuro post. Para ilustrar na pr\u00e1tica a utiliza\u00e7\u00e3o das estat\u00edsticas de colunas pelo Otimizador, vamos executar uma consulta simples e verificar que formula o Otimizador utiliza para calcular a cardinalidade da opera\u00e7\u00e3o apresentada no plano de execu\u00e7\u00e3o.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">Cria\u00e7\u00e3o da tabela para a consulta<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para execu\u00e7\u00e3o da consulta vamos criar uma tabela TAB1, alterar um campo para nulo em algumas linhas da tabela e gerar as estat\u00edsticas dessa tabela.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/><\/div><\/td><td><div class=\"php codecolorer\">appuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM V<span class=\"re0\">$VERSION<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nBANNER<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nOracle Database 11g Enterprise Edition Release 11<span class=\"sy0\">.<\/span>2<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>4<span class=\"sy0\">.<\/span>0 <span class=\"sy0\">-<\/span> 64bit Production<br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> create table tab1<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;<span class=\"kw1\">as<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;select <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp;from all_objects<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; where rownum <span class=\"sy0\">&lt;=<\/span> <span class=\"nu0\">10000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTable created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> update tab1 set object_type <span class=\"sy0\">=<\/span> <span class=\"kw4\">null<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; where object_type <span class=\"sy0\">=<\/span> <span class=\"st_h\">'TABLE'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1022<\/span> rows updated<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> commit<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit complete<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> begin<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp;dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ownname &nbsp; &nbsp; &nbsp;<span class=\"sy0\">=&gt;<\/span> user<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;tabname &nbsp; &nbsp; &nbsp;<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'TAB1'<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;method_opt &nbsp; <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'for all columns size 1'<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp;<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp;<span class=\"sy0\">\/<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> select sample_size<span class=\"sy0\">,<\/span> num_nulls<span class=\"sy0\">,<\/span> num_distinct<span class=\"sy0\">,<\/span> histogram<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;from user_tab_columns<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; where table_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'TAB1'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; and column_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'OBJECT_TYPE'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSAMPLE_SIZE &nbsp;NUM_NULLS NUM_DISTINCT HISTOGRAM<br \/>\n<span class=\"sy0\">-----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">------------<\/span> <span class=\"sy0\">---------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">8978<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">1022<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">18<\/span> NONE<br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">Plano de execu\u00e7\u00e3o da consulta<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos executar a consulta e verificar como o Otimizador calcular\u00e1 a cardinalidade da opera\u00e7\u00e3o de acesso as linhas da tabela.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/><\/div><\/td><td><div class=\"php codecolorer\">appuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> ALTER SESSION SET statistics_level<span class=\"sy0\">=<\/span>ALL<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSession altered<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> select <span class=\"coMULTI\">\/* tst101 *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;from TAB1<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; where object_type <span class=\"sy0\">=<\/span> <span class=\"st_h\">'INDEX'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">1142<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE sql_text LIKE <span class=\"st_h\">'%tst101%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n6j1gtqn30y14t &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nold &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"kw2\">new<\/span> &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'6j1gtqn30y14t'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;6j1gtqn30y14t<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nselect <span class=\"coMULTI\">\/* tst101 *\/<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#41;<\/span> &nbsp; from TAB1 &nbsp;where object_type <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">1117438016<\/span><br \/>\n<br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Name <span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">40<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">133<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/sort\"><span class=\"kw3\">SORT<\/span><\/a> <a href=\"http:\/\/www.php.net\/aggregate\"><span class=\"kw3\">AGGREGATE<\/span><\/a> &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">7<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">133<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS FULL<span class=\"sy0\">|<\/span> TAB1 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">499<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">3493<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">40<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1142<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">133<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> select NUM_ROWS from user_tab_statistics where table_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'TAB1'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; NUM_ROWS<br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">10000<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> select DENSITY from user_tab_columns where TABLE_NAME <span class=\"sy0\">=<\/span> <span class=\"st_h\">'TAB1'<\/span> and COLUMN_NAME <span class=\"sy0\">=<\/span> <span class=\"st_h\">'OBJECT_TYPE'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;DENSITY<br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n<span class=\"nu19\">.055555556<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> select NUM_NULLS from user_tab_columns where TABLE_NAME <span class=\"sy0\">=<\/span> <span class=\"st_h\">'TAB1'<\/span> and COLUMN_NAME <span class=\"sy0\">=<\/span> <span class=\"st_h\">'OBJECT_TYPE'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp;NUM_NULLS<br \/>\n<span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">1022<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">--&gt;<\/span> <span class=\"me1\">CARDINALITY<\/span> <span class=\"sy0\">=<\/span> <span class=\"br0\">&#40;<\/span> density <span class=\"sy0\">*<\/span> <span class=\"br0\">&#40;<\/span>num_rows <span class=\"sy0\">-<\/span> num_nulls<span class=\"br0\">&#41;<\/span> <span class=\"sy0\">\/<\/span> num_rows <span class=\"br0\">&#41;<\/span> <span class=\"sy0\">*<\/span> num_rows<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> select <span class=\"br0\">&#40;<\/span><span class=\"nu19\">0.055555556<\/span><span class=\"sy0\">*<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">10000<\/span><span class=\"sy0\">-<\/span><span class=\"nu0\">1022<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">\/<\/span><span class=\"nu0\">10000<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">*<\/span><span class=\"nu0\">10000<\/span> CARDINALITY from dual<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCARDINALITY<br \/>\n<span class=\"sy0\">-----------<\/span><br \/>\n&nbsp;<span class=\"nu19\">498.777782<\/span><br \/>\n<br \/>\nappuser<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Verificando o plano de execu\u00e7\u00e3o da consulta, constatamos que o Otimizador estimou que seriam acessadas 499 linhas (E-ROWS) na opera\u00e7\u00e3o &#8220;TABLE ACCESS FULL&#8221; da tabela TAB1, quando na verdade foram acessadas 1142 linhas (A-ROWS), esta estimativa n\u00e3o foi muito boa pois os valores repetidos dessa coluna n\u00e3o est\u00e3o distribu\u00eddos de forma uniforme, neste tipo de situa\u00e7\u00e3o para o Otimizador fazer um estimativa melhor ele precisa acessar estat\u00edsticas de histogramas.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A formula utilizada pelo Otimizador para calcular essa cardinalidade sem o auxilio de histogramas foi <strong>CARDINALITY = ( density * (num_rows &#8211; num_nulls) \/ num_rows ) * num_rows<\/strong> . Na log de execu\u00e7\u00e3o acima foram inclu\u00eddas algumas consultas para obter os valores de cada uma das vari\u00e1veis da formula e o resultado final dessa equa\u00e7\u00e3o foi 498.777782 que arredondando resulta nas 499 linhas estimadas no plano de execu\u00e7\u00e3o.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Conclus\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Neste artigo verificamos como o Otimizador utiliza as estat\u00edsticas de tabela e colunas para estimar a cardinalidade de uma opera\u00e7\u00e3o no plano de execu\u00e7\u00e3o sem a utiliza\u00e7\u00e3o de estat\u00edsticas de histogramas, com a presen\u00e7a de histogramas o Otimizador utiliza outra formula que ser\u00e1 tratada num futuro post. No nosso exemplo a estimativa realizada pelo Otimizador n\u00e3o foi muito boa pois para esse tipo de coluna o ideal seria que ele tivesse acesso as informa\u00e7\u00f5es estat\u00edsticas de histograma da coluna indicada no filtro da cl\u00e1usula WHERE (OBJECT_TYPE), com isso podemos constatar que aus\u00eancia de informa\u00e7\u00f5es estat\u00edsticas dos objetos envolvidos numa consulta podem prejudicar a qualidade das estimativas realizadas pelo Otimizador e lava-lo a montar planos de execu\u00e7\u00e3o com desempenho ruim.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias<\/span><\/h2>\n<p><strong><a href=\"http:\/\/docs.oracle.com\/cd\/E25054_01\/server.1111\/e16638\/stats.htm\" target=\"_blank\">http:\/\/docs.oracle.com\/cd\/E25054_01\/server.1111\/e16638\/stats.htm<\/a><\/strong><\/p>\n<p>Livro: Cost-Based Oracle Fundamentals &#8211; Autor: Jonathan Lewis<\/p>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n<a href=\"http:\/\/dbtimewizard.com.br\/treinamento\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1255\" src=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2018\/10\/promo_cur02.jpg\" alt=\"Promo-D75L\" width=\"330\" height=\"242\" \/><\/a><\/p>\n<p><a href=\"https:\/\/youtu.be\/l6OphhTle9I\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1215\" src=\"http:\/\/dbtimewizard.com.br\/wp-content\/uploads\/2018\/01\/video-02-300x168.jpg\" alt=\"video-02\" width=\"330\" height=\"242\" \/><\/a><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Otimizador baseado em custo (CBO) utiliza estat\u00edsticas para determinar o custo dos diversos planos de execu\u00e7\u00e3o que ele produz para uma determinada instru\u00e7\u00e3o SQL e escolhe o plano com o menor custo para utilizar, portanto as informa\u00e7\u00f5es estat\u00edsticas s\u00e3o cruciais na escolha do plano de execu\u00e7\u00e3o e devem fornecer informa\u00e7\u00f5es precisas e atualizadas para que o Otimizador consiga realizar<\/p>\n","protected":false},"author":2,"featured_media":324,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[6,90,42,84,91,93,94,10,92],"class_list":["post-311","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-estatisticas","tag-cbo","tag-column-statistics","tag-cost-base-optimizer","tag-density","tag-estatisticas-de-colunas","tag-num_distinct","tag-num_nulls","tag-otimizador","tag-user_tab_columns"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"V. J.A.\"\/>\n\t<link rel=\"canonical\" href=\"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.9\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_BR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"DBTimeWizard | Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard\" \/>\n\t\t<meta property=\"og:description\" content=\"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2016-02-22T02:14:50+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-11-11T22:01:21+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#article\",\"name\":\"Qual a import\\u00e2ncia das estat\\u00edsticas de colunas para o Otimizador? | DBTimeWizard\",\"headline\":\"Qual a import\\u00e2ncia das estat\\u00edsticas de colunas para o Otimizador?\",\"author\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\"},\"publisher\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/Estatisticas.jpg\",\"width\":516,\"height\":408,\"caption\":\"Column statistics\"},\"datePublished\":\"2016-02-21T23:14:50-03:00\",\"dateModified\":\"2019-11-11T19:01:21-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#webpage\"},\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#webpage\"},\"articleSection\":\"Estat\\u00edsticas, CBO, COLUMN STATISTICS, COST BASE OPTIMIZER, DENSITY, Estat\\u00edsticas de colunas, NUM_DISTINCT, NUM_NULLS, Otimizador, USER_TAB_COLUMNS\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"position\":1,\"name\":\"In\\u00edcio\",\"item\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/estatisticas\\\/#listItem\",\"name\":\"Estat\\u00edsticas\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/estatisticas\\\/#listItem\",\"position\":2,\"name\":\"Estat\\u00edsticas\",\"item\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/estatisticas\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#listItem\",\"name\":\"Qual a import\\u00e2ncia das estat\\u00edsticas de colunas para o Otimizador?\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#listItem\",\"position\":3,\"name\":\"Qual a import\\u00e2ncia das estat\\u00edsticas de colunas para o Otimizador?\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/estatisticas\\\/#listItem\",\"name\":\"Estat\\u00edsticas\"}}]},{\"@type\":\"Organization\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#organization\",\"name\":\"DBTimeWizard\",\"description\":\"Manter seus Bancos de Dados e Aplica\\u00e7\\u00f5es com alto desempenho \\u00e9 o nosso neg\\u00f3cio.\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/\",\"name\":\"V. J.A.\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0ebfb24510db8dc34abd17c6b4afddd99d8e48dc9184002bc49b2fc6d324d68f?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"V. J.A.\"}},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#webpage\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/\",\"name\":\"Qual a import\\u00e2ncia das estat\\u00edsticas de colunas para o Otimizador? | DBTimeWizard\",\"description\":\"Esse artigo mostra como as estat\\u00edsticas de colunas s\\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\\u00e7\\u00e3o.\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#breadcrumblist\"},\"author\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\"},\"creator\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/author\\\/vjaquino\\\/#author\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2016\\\/02\\\/Estatisticas.jpg\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#mainImage\",\"width\":516,\"height\":408,\"caption\":\"Column statistics\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\\\/#mainImage\"},\"datePublished\":\"2016-02-21T23:14:50-03:00\",\"dateModified\":\"2019-11-11T19:01:21-03:00\"},{\"@type\":\"WebSite\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/\",\"name\":\"DBTimeWizard\",\"description\":\"Manter seus Bancos de Dados e Aplica\\u00e7\\u00f5es com alto desempenho \\u00e9 o nosso neg\\u00f3cio.\",\"inLanguage\":\"pt-BR\",\"publisher\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard","description":"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.","canonical_url":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#article","name":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard","headline":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador?","author":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author"},"publisher":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#organization"},"image":{"@type":"ImageObject","url":"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2016\/02\/Estatisticas.jpg","width":516,"height":408,"caption":"Column statistics"},"datePublished":"2016-02-21T23:14:50-03:00","dateModified":"2019-11-11T19:01:21-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#webpage"},"isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#webpage"},"articleSection":"Estat\u00edsticas, CBO, COLUMN STATISTICS, COST BASE OPTIMIZER, DENSITY, Estat\u00edsticas de colunas, NUM_DISTINCT, NUM_NULLS, Otimizador, USER_TAB_COLUMNS"},{"@type":"BreadcrumbList","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","position":1,"name":"In\u00edcio","item":"http:\/\/dbtimewizard.com.br\/blog","nextItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/estatisticas\/#listItem","name":"Estat\u00edsticas"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/estatisticas\/#listItem","position":2,"name":"Estat\u00edsticas","item":"http:\/\/dbtimewizard.com.br\/blog\/category\/estatisticas\/","nextItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#listItem","name":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador?"},"previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","name":"In\u00edcio"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#listItem","position":3,"name":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador?","previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/estatisticas\/#listItem","name":"Estat\u00edsticas"}}]},{"@type":"Organization","@id":"http:\/\/dbtimewizard.com.br\/blog\/#organization","name":"DBTimeWizard","description":"Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.","url":"http:\/\/dbtimewizard.com.br\/blog\/"},{"@type":"Person","@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author","url":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/","name":"V. J.A.","image":{"@type":"ImageObject","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/0ebfb24510db8dc34abd17c6b4afddd99d8e48dc9184002bc49b2fc6d324d68f?s=96&d=mm&r=g","width":96,"height":96,"caption":"V. J.A."}},{"@type":"WebPage","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#webpage","url":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/","name":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard","description":"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#website"},"breadcrumb":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#breadcrumblist"},"author":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author"},"creator":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/author\/vjaquino\/#author"},"image":{"@type":"ImageObject","url":"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2016\/02\/Estatisticas.jpg","@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#mainImage","width":516,"height":408,"caption":"Column statistics"},"primaryImageOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/#mainImage"},"datePublished":"2016-02-21T23:14:50-03:00","dateModified":"2019-11-11T19:01:21-03:00"},{"@type":"WebSite","@id":"http:\/\/dbtimewizard.com.br\/blog\/#website","url":"http:\/\/dbtimewizard.com.br\/blog\/","name":"DBTimeWizard","description":"Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.","inLanguage":"pt-BR","publisher":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#organization"}}]},"og:locale":"pt_BR","og:site_name":"DBTimeWizard | Manter seus Bancos de Dados e Aplica\u00e7\u00f5es com alto desempenho \u00e9 o nosso neg\u00f3cio.","og:type":"article","og:title":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard","og:description":"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.","og:url":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/","article:published_time":"2016-02-22T02:14:50+00:00","article:modified_time":"2019-11-11T22:01:21+00:00","twitter:card":"summary","twitter:title":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | DBTimeWizard","twitter:description":"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o."},"aioseo_meta_data":{"post_id":"311","title":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador? | #site_title","description":"Esse artigo mostra como as estat\u00edsticas de colunas s\u00e3o utilizadas pelo Otimizador (CBO) no plano de execu\u00e7\u00e3o.","keywords":[{"label":"COLUMN STATISTICS","value":"COLUMN STATISTICS"},{"label":"Estat\u00edsticas de colunas","value":"Estat\u00edsticas de colunas"},{"label":"USER_TAB_COLUMNS","value":"USER_TAB_COLUMNS"},{"label":"NUM_DISTINCT","value":"NUM_DISTINCT"},{"label":"NUM_NULLS","value":"NUM_NULLS"},{"label":"DENSITY","value":"DENSITY"},{"label":"Otimizador","value":"Otimizador"},{"label":"CBO","value":"CBO"},{"label":"COST BASE OPTIMIZER","value":"COST BASE OPTIMIZER"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-12-05 15:18:40","updated":"2026-03-19 14:27:19","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/dbtimewizard.com.br\/blog\" title=\"In\u00edcio\">In\u00edcio<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"http:\/\/dbtimewizard.com.br\/blog\/category\/estatisticas\/\" title=\"Estat\u00edsticas\">Estat\u00edsticas<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tQual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador?\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"In\u00edcio","link":"http:\/\/dbtimewizard.com.br\/blog"},{"label":"Estat\u00edsticas","link":"http:\/\/dbtimewizard.com.br\/blog\/category\/estatisticas\/"},{"label":"Qual a import\u00e2ncia das estat\u00edsticas de colunas para o Otimizador?","link":"http:\/\/dbtimewizard.com.br\/blog\/qual-a-importancia-das-estatisticas-de-colunas-para-o-otimizador\/"}],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/311","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/comments?post=311"}],"version-history":[{"count":21,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/311\/revisions"}],"predecessor-version":[{"id":2104,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/311\/revisions\/2104"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/324"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=311"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=311"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=311"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}