{"id":2133,"date":"2020-02-26T10:05:15","date_gmt":"2020-02-26T13:05:15","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=2133"},"modified":"2020-02-26T10:05:15","modified_gmt":"2020-02-26T13:05:15","slug":"como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/","title":{"rendered":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O Otimizador do Oracle cria planos de execu\u00e7\u00e3o baseado nas estat\u00edsticas dos objetos no banco de dados, a qualidade destas informa\u00e7\u00f5es \u00e9 decisiva na precis\u00e3o das estimativas de acesso das opera\u00e7\u00f5es no plano de execu\u00e7\u00e3o e consequentemente determinam o desempenho das instru\u00e7\u00f5es SQL. Os <a href=\"http:\/\/dbtimewizard.com.br\/blog\/histogramas-qual-importancia-deles\/\" target=\"_blank\"><strong>Histogramas<\/strong> <\/a>s\u00e3o parte destas estat\u00edsticas e at\u00e9 a vers\u00e3o 11g existiam somente 2 tipos (FREQUENCY e HEIGHT BALANCED), Estes dois tipos de Histogramas n\u00e3o conseguiam prover o Otimizador com estat\u00edsticas de qualidade para algumas situa\u00e7\u00f5es de conjuntos de dados, por esta raz\u00e3o a partir da vers\u00e3o 12c o Banco de dados Oracle passou a utilizar mais dois tipos de Histogramas (TOP FREQUENCY e HYBRID).<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Neste artigo vamos mostrar como o novo Histograma HYBRID \u00e9 mais preciso, para isto vamos comparar a execu\u00e7\u00e3o de uma consulta com o mesmo conjunto de dados em duas bases, na base 11g a consulta vai utilizar o Histograma HEIGHT BALANCED e na base 19c ela vai utilizar o Histograma HYBRID que ganhou este nome pois ele combina as caracter\u00edsticas dos Histogramas FREQUENCY e HEIGHT BALANCED.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">DEMONSTRA\u00c7\u00c3O\u00a0PR\u00c1TICA<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A\u00a0primeira simula\u00e7\u00e3o ser\u00e1 realizada numa\u00a0base 11gR2 onde vamos verificar que o Otimizador utiliza o Histograma HEIGHT BALANCED\u00a0e faz uma estimativa de cardinalidade imprecisa e como consequ\u00eancia escolhe um m\u00e9todo de acesso inadequado:<\/span><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\">1.1) Criar uma tabela com um \u00edndice <\/span><\/strong><br \/>\n<strong><span style=\"font-size: 12pt;\">1.2) Executar a consulta na tabela criada<\/span><\/strong><br \/>\n<strong><span style=\"font-size: 12pt;\">1.3) Executar a consulta novamente incluindo um HINT para corrigir a estimativa de cardinalidade<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A\u00a0segunda simula\u00e7\u00e3o ser\u00e1 realizada numa base 19c onde vamos verificar que o Otimizador utiliza o Histograma HYBRID o que melhora a estimativa de cardinalidade\u00a0de acesso a tabela\u00a0e como consequ\u00eancia\u00a0ser\u00e1 escolhido um plano de execu\u00e7\u00e3o com um m\u00e9todo de acesso mais eficiente.<\/span><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\">2.1) Criar uma tabela com um \u00edndice <\/span><\/strong><br \/>\n<strong><span style=\"font-size: 12pt;\">2.2) Executar uma consulta na tabela criada<\/span><\/strong><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 18.6667px;\">Base\u00a011gR2<\/span><\/h2>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1.1) Criar uma tabela com um \u00edndice<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos criar os objetos necess\u00e1rios para realizar a nossa simula\u00e7\u00e3o e coletar as estat\u00edsticas de forma que seja criado o Histograma para a coluna CUST_CITY que \u00e9 utilizada como filtro na cl\u00e1usula WHERE.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <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 \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw063<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; <span class=\"kw1\">AS<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM sh<span class=\"sy0\">.<\/span>customers<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp;ORDER BY country_id<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE index dbtw063_idx<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp;ON dbtw063<span class=\"br0\">&#40;<\/span>cust_city<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n\u00cdndice criado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">EXEC<\/span><\/a> DBMS_STATS<span class=\"sy0\">.<\/span>GATHER_TABLE_STATS<span class=\"br0\">&#40;<\/span>user<span class=\"sy0\">,<\/span><span class=\"st_h\">'DBTW063'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'for columns cust_city size 254'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> COL column_name <span class=\"kw1\">FOR<\/span> A16<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT column_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; num_distinct<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; density<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; num_nulls<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; avg_col_len <span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; histogram<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; num_buckets<br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; &nbsp;FROM user_tab_col_statistics<br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; WHERE table_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW063'<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; AND column_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'CUST_CITY'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCOLUMN_NAME &nbsp; &nbsp; &nbsp;NUM_DISTINCT &nbsp; &nbsp;DENSITY &nbsp;NUM_NULLS AVG_COL_LEN HISTOGRAM &nbsp; &nbsp; &nbsp; NUM_BUCKETS<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-----------<\/span> <span class=\"sy0\">---------------<\/span> <span class=\"sy0\">-----------<\/span><br \/>\nCUST_CITY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">620<\/span> <span class=\"sy0\">,<\/span><span class=\"nu19\">002212389<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">10<\/span> HEIGHT BALANCED &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">254<\/span><br \/>\n<br \/>\nSQL <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;\">Observamos acima que a consulta na vis\u00e3o USER_TAB_COL_STATISTICS confirma a cria\u00e7\u00e3o do histograma HEIGHT BALANCED na coluna CUST_CITY.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1.2) Executar uma consulta na tabela criada<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> ALTER SESSION SET statistics_level <span class=\"sy0\">=<\/span> all<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSess\u00e3o alterada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw063<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE cust_city IN <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tokyo'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Arnhem'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; GROUP by cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCUST_CITY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COUNTRY_ID &nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span><br \/>\nTokyo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">52782<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">16<\/span><br \/>\nArnhem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">52770<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">17<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor<span class=\"br0\">&#40;<\/span>format<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;gsp9gna1k97nn<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">,<\/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=\"st0\">&quot;SYS_B_0&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp; FROM dbtw063 &nbsp;WHERE<br \/>\ncust_city IN <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_1&quot;<\/span><span class=\"sy0\">,:<\/span><span class=\"st0\">&quot;SYS_B_2&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp;GROUP by cust_city<span class=\"sy0\">,<\/span> country_id<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\">1469487015<\/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 &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <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> &nbsp;OMem <span class=\"sy0\">|<\/span> &nbsp;1Mem <span class=\"sy0\">|<\/span> Used<span class=\"sy0\">-<\/span>Mem <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; &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=\"nu0\">2<\/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\">1457<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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\/hash\"><span class=\"kw3\">HASH<\/span><\/a> GROUP BY &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &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\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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\">1457<\/span> <span class=\"sy0\">|<\/span> &nbsp;1301K<span class=\"sy0\">|<\/span> &nbsp;1301K<span class=\"sy0\">|<\/span> &nbsp;599K <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/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> DBTW063 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">133<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">33<\/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\">1457<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_CITY&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_1 OR <span class=\"st0\">&quot;CUST_CITY&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_2<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">20<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <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;\">Observe no plano de execu\u00e7\u00e3o que o Otimizador estimou que seriam selecionadas 133 linhas na tabela (Coluna E-Rows), quando na verdade foram acessadas somente 33 linhas (Coluna A-Rows). Devido a esta estimativa imprecisa o Otimizador decide utilizar a opera\u00e7\u00e3o TABLE ACCESS FULL para acessar as linhas da tabela, isto tornou o plano de execu\u00e7\u00e3o ineficiente pois para acessar 33 linhas da tabela ele poderia utilizar o \u00edndice que consumiria menos recursos do banco.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1.3) Executar a consulta novamente incluindo um HINT<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/*+ OPT_ESTIMATE(INDEX_SCAN DBTW063 DBTW063_IDX ROWS=33) *\/<\/span> cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw063<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE cust_city IN <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tokyo'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Arnhem'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; GROUP by cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCUST_CITY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COUNTRY_ID &nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span><br \/>\nTokyo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">52782<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">16<\/span><br \/>\nArnhem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">52770<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">17<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor<span class=\"br0\">&#40;<\/span>format<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;6rvn8phxqz613<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/*+ OPT_ESTIMATE(INDEX_SCAN DBTW063 DBTW063_IDX ROWS=33) *\/<\/span><br \/>\ncust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">,<\/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=\"st0\">&quot;SYS_B_0&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp; FROM dbtw063 &nbsp;WHERE<br \/>\ncust_city IN <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_1&quot;<\/span><span class=\"sy0\">,:<\/span><span class=\"st0\">&quot;SYS_B_2&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp;GROUP by cust_city<span class=\"sy0\">,<\/span> country_id<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\">2102246616<\/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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <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> &nbsp;OMem <span class=\"sy0\">|<\/span> &nbsp;1Mem <span class=\"sy0\">|<\/span> Used<span class=\"sy0\">-<\/span>Mem <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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=\"nu0\">2<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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\/hash\"><span class=\"kw3\">HASH<\/span><\/a> GROUP BY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp;1301K<span class=\"sy0\">|<\/span> &nbsp;1301K<span class=\"sy0\">|<\/span> &nbsp;604K <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; INLIST ITERATOR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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; <span class=\"nu0\">33<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> DBTW063 &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">133<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">33<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">4<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> DBTW063_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">33<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">33<\/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; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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\">4<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_CITY&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_1 OR <span class=\"st0\">&quot;CUST_CITY&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_2<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">23<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <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;\">Incluindo o HINT OPT_ESTIMATE na consulta, nos informamos ao otimizador que a cardinalidade da opera\u00e7\u00e3o de acesso a tabela usando o \u00edndice selecionaria 33 linhas, com isso o Otimizador decide acessar a tabela utilizando o \u00edndice e o desempenho da consulta melhora 98% pois na primeira consulta o banco acessou 1.457 blocos para selecionar as 33 linhas e com o HINT ele acessou somente 31 blocos.<\/span><br \/>\n<span style=\"font-size: 12pt;\">Observe que a estimativa de cardinalidade da opera\u00e7\u00e3o de acesso a tabela continua como 133 linhas, pois n\u00e3o inclu\u00edmos um HINT para esta opera\u00e7\u00e3o e o Otimizador continua fazendo a estimativa baseado no Histograma HEIGHT BALANCED.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Base\u00a019c<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos acessar uma base Oracle 19c e repetir o mesmo processo, mas agora o Otimizador vai utilizar o Histograma Hybrid pois a partir da vers\u00e3o 12c o banco j\u00e1 passou a trabalhar com ele. Nesta simula\u00e7\u00e3o a coleta de estat\u00edsticas vai gerar um Histograma HYBRID para a coluna presente no filtro da cl\u00e1usula WHERE da consulta que estamos utilizando.<\/span><\/p>\n<h2><span style=\"font-size: 14pt;\">2.1) Criar uma tabela com um \u00edndice<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos criar os objetos necess\u00e1rios para realizar a simula\u00e7\u00e3o na base 19c e vamos executar o comando de coleta de estat\u00edsticas de forma que seja criado o Histograma para a coluna CUST_CITY.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT BANNER_FULL 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_FULL<br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------<\/span><br \/>\nOracle Database 19c Enterprise Edition Release 19<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0 <span class=\"sy0\">-<\/span> Production<br \/>\nVersion 19<span class=\"sy0\">.<\/span>3<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> linha selecionada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw063<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; <span class=\"kw1\">AS<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM sh<span class=\"sy0\">.<\/span>customers<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp;ORDER BY country_id<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE index dbtw063_idx<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp;ON dbtw063<span class=\"br0\">&#40;<\/span>cust_city<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n\u00cdndice criado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">EXEC<\/span><\/a> DBMS_STATS<span class=\"sy0\">.<\/span>GATHER_TABLE_STATS<span class=\"br0\">&#40;<\/span>user<span class=\"sy0\">,<\/span><span class=\"st_h\">'DBTW063'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'for columns cust_city size 600'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nProcedimento PL<span class=\"sy0\">\/<\/span>SQL conclu\u00ed<span class=\"kw1\">do<\/span> com sucesso<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> COL column_name <span class=\"kw1\">FOR<\/span> A16<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT column_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; num_distinct<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; density<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; num_nulls<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; avg_col_len <span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; histogram<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; num_buckets<br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; &nbsp;FROM user_tab_col_statistics<br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; WHERE table_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW063'<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; AND column_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'CUST_CITY'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCOLUMN_NAME &nbsp; &nbsp; &nbsp;NUM_DISTINCT &nbsp; &nbsp; &nbsp;DENSITY &nbsp;NUM_NULLS AVG_COL_LEN HISTOGRAM &nbsp; &nbsp; &nbsp; NUM_BUCKETS<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">------------<\/span> <span class=\"sy0\">------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-----------<\/span> <span class=\"sy0\">---------------<\/span> <span class=\"sy0\">-----------<\/span><br \/>\nCUST_CITY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">620<\/span> &nbsp; <span class=\"nu19\">.000927000<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">10<\/span> HYBRID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">600<\/span><br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> linha selecionada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <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;\">Outra mudan\u00e7a ocorrida com os Histogramas a partir da vers\u00e3o 12c \u00e9 que o numero de Buckets que era limitado em 254 foi expandido para 2048, observe no comando de coleta de estat\u00edsticas acima que alterei o par\u00e2metro size para 600 para for\u00e7ar a cria\u00e7\u00e3o do Histograma HYBRID.<\/span><br \/>\n<span style=\"font-size: 12pt;\">Tamb\u00e9m podemos constatar acima que a consulta na vis\u00e3o USER_TAB_COL_STATISTICS confirma a cria\u00e7\u00e3o do histograma HYBRID na coluna CUST_CITY.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2.2) Executar uma consulta na tabela criada<\/span><\/h2>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> ALTER SESSION SET statistics_level <span class=\"sy0\">=<\/span> all<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSess\u00e3o alterada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw063<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE cust_city IN <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tokyo'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Arnhem'<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; GROUP by cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCUST_CITY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;COUNTRY_ID &nbsp; <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">COUNT<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span><br \/>\nTokyo &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">52782<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">16<\/span><br \/>\nArnhem &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">52770<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">17<\/span><br \/>\n<br \/>\n<span class=\"nu0\">2<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor<span class=\"br0\">&#40;<\/span>format<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'allstats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;7y7scsjjdz757<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT cust_city<span class=\"sy0\">,<\/span> country_id<span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/count\"><span class=\"kw3\">count<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span> &nbsp; FROM dbtw063 &nbsp;WHERE cust_city<br \/>\nIN <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'Tokyo'<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'Arnhem'<\/span><span class=\"br0\">&#41;<\/span> &nbsp;GROUP by cust_city<span class=\"sy0\">,<\/span> country_id<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\">646836277<\/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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <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> &nbsp;OMem <span class=\"sy0\">|<\/span> &nbsp;1Mem <span class=\"sy0\">|<\/span> Used<span class=\"sy0\">-<\/span>Mem <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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=\"nu0\">2<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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\/hash\"><span class=\"kw3\">HASH<\/span><\/a> GROUP BY &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">26<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp;1282K<span class=\"sy0\">|<\/span> &nbsp;1282K<span class=\"sy0\">|<\/span> &nbsp;663K <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; INLIST ITERATOR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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; <span class=\"nu0\">33<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;TABLE ACCESS BY INDEX ROWID BATCHED<span class=\"sy0\">|<\/span> DBTW063 &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">58<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">33<\/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; &nbsp;<span class=\"nu0\">31<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">4<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> DBTW063_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">58<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">33<\/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; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<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\">4<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;CUST_CITY&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st_h\">'Arnhem'<\/span> OR <span class=\"st0\">&quot;CUST_CITY&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st_h\">'Tokyo'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">22<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <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;\">Observe no plano de execu\u00e7\u00e3o que com a utiliza\u00e7\u00e3o do Histograma HYBRID a estimativa de cardinalidade foi de 58 linhas, bem pr\u00f3ximo das 33 linhas que de fato ser\u00e3o acessadas, esta melhora na estimativa fez com que o Otimizador escolhesse acessar as linhas na tabela utilizando a opera\u00e7\u00e3o INDEX RANGE SCAN que como vimos anteriormente \u00e9 mais eficiente do que utilizar uma opera\u00e7\u00e3o TABLE ACCESS FULL.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">CONCLUS\u00c3O<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">A implementa\u00e7\u00e3o de novos Histogramas a partir da vers\u00e3o 12c aumentou a precis\u00e3o do Otimizador no calculo das estimativas de cardinalidade para conjunto de dados com repeti\u00e7\u00e3o n\u00e3o uniformes (SKEWED), com isso o Otimizador passou a escolher planos de execu\u00e7\u00e3o mais eficientes e consequentemente o desempenho das consultas melhoraram. O outro tipo de Histograma criado a partir da vers\u00e3o 12c \u00e9 o TOP FREQUENCY que \u00e9 uma esp\u00e9cie de UPGRADE do Histograma FREQUENCY, mas isto j\u00e1 \u00e9 assunto para um outro artigo.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">REFER\u00caNCIAS<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"https:\/\/docs.oracle.com\/database\/121\/TGSQL\/tgsql_histo.htm#TGSQL366\" target=\"_blank\">https:\/\/docs.oracle.com\/database\/121\/<\/a><\/span><\/strong><\/p>\n<p>&nbsp;<br \/>\n&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;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Otimizador do Oracle cria planos de execu\u00e7\u00e3o baseado nas estat\u00edsticas dos objetos no banco de dados, a qualidade destas informa\u00e7\u00f5es \u00e9 decisiva na precis\u00e3o das estimativas de acesso das opera\u00e7\u00f5es no plano de execu\u00e7\u00e3o e consequentemente determinam o desempenho das instru\u00e7\u00f5es SQL. Os Histogramas s\u00e3o parte destas estat\u00edsticas e at\u00e9 a vers\u00e3o 11g existiam somente 2 tipos (FREQUENCY e<\/p>\n","protected":false},"author":2,"featured_media":2135,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[39,226,162,161,225,227,82,10,228,119],"class_list":["post-2133","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-estatisticas","tag-estatisticas","tag-height-balanced-histograms","tag-histogramas","tag-histograms","tag-hybrid-histograms","tag-new-feature-12c","tag-optimizer","tag-otimizador","tag-skew","tag-statistics"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/2133","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=2133"}],"version-history":[{"count":17,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/2133\/revisions"}],"predecessor-version":[{"id":2155,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/2133\/revisions\/2155"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/2135"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2133"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2133"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2133"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}