{"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":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.\" \/>\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\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/\" \/>\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=\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard\" \/>\n\t\t<meta property=\"og:description\" content=\"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-26T13:05:15+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-26T13:05:15+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.\" \/>\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\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#article\",\"name\":\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard\",\"headline\":\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?\",\"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\\\/2020\\\/02\\\/Hybrid_Histograms.jpg\",\"width\":332,\"height\":248,\"caption\":\"Hybrid Histograms\"},\"datePublished\":\"2020-02-26T10:05:15-03:00\",\"dateModified\":\"2020-02-26T10:05:15-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#webpage\"},\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#webpage\"},\"articleSection\":\"Estat\\u00edsticas, Estatisticas, HEIGHT BALANCED Histograms, Histogramas, Histograms, HYBRID Histograms, new feature 12c, Optimizer, Otimizador, skew, STATISTICS\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#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\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#listItem\",\"name\":\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#listItem\",\"position\":3,\"name\":\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?\",\"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\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#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\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#webpage\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/\",\"name\":\"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard\",\"description\":\"Este artigo mostra como o Hybrid Histogram \\u00e9 mais eficaz em rela\\u00e7\\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#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\\\/2020\\\/02\\\/Hybrid_Histograms.jpg\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#mainImage\",\"width\":332,\"height\":248,\"caption\":\"Hybrid Histograms\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\\\/#mainImage\"},\"datePublished\":\"2020-02-26T10:05:15-03:00\",\"dateModified\":\"2020-02-26T10:05:15-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":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard","description":"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.","canonical_url":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#article","name":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard","headline":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?","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\/2020\/02\/Hybrid_Histograms.jpg","width":332,"height":248,"caption":"Hybrid Histograms"},"datePublished":"2020-02-26T10:05:15-03:00","dateModified":"2020-02-26T10:05:15-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#webpage"},"isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#webpage"},"articleSection":"Estat\u00edsticas, Estatisticas, HEIGHT BALANCED Histograms, Histogramas, Histograms, HYBRID Histograms, new feature 12c, Optimizer, Otimizador, skew, STATISTICS"},{"@type":"BreadcrumbList","@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#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\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#listItem","name":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?"},"previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","name":"In\u00edcio"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#listItem","position":3,"name":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?","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\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#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\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#webpage","url":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/","name":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard","description":"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#website"},"breadcrumb":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#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\/2020\/02\/Hybrid_Histograms.jpg","@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#mainImage","width":332,"height":248,"caption":"Hybrid Histograms"},"primaryImageOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/#mainImage"},"datePublished":"2020-02-26T10:05:15-03:00","dateModified":"2020-02-26T10:05:15-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":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard","og:description":"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.","og:url":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/","article:published_time":"2020-02-26T13:05:15+00:00","article:modified_time":"2020-02-26T13:05:15+00:00","twitter:card":"summary","twitter:title":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | DBTimeWizard","twitter:description":"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa."},"aioseo_meta_data":{"post_id":"2133","title":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente? | #site_title","description":"Este artigo mostra como o Hybrid Histogram \u00e9 mais eficaz em rela\u00e7\u00e3o High Balance Histogram para ajudar o Otimizador a fazer uma estimativa de cardinalidade mais precisa.","keywords":[{"label":"HYBRID Histograms","value":"HYBRID Histograms"},{"label":"HEIGHT BALANCED Histograms","value":"HEIGHT BALANCED Histograms"},{"label":"statistics","value":"statistics"},{"label":"Estatisticas","value":"Estatisticas"},{"label":"Histograms","value":"Histograms"},{"label":"Histogramas","value":"Histogramas"},{"label":"Otimizador","value":"Otimizador"},{"label":"OPTIMIZER","value":"OPTIMIZER"},{"label":"new feature 12c","value":"new feature 12c"},{"label":"skew","value":"skew"}],"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":[],"defaultGraph":"","defaultPostTypeGraph":""},"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 14:44:56","updated":"2026-03-19 14:40:24","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\tComo o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?\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":"Como o Hybrid Histogram contribui para deixar o Otimizador mais inteligente?","link":"http:\/\/dbtimewizard.com.br\/blog\/como-o-hybrid-histogram-contribui-para-deixar-o-otimizador-mais-inteligente\/"}],"_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}]}}