{"id":1659,"date":"2018-06-10T20:45:34","date_gmt":"2018-06-10T23:45:34","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=1659"},"modified":"2019-11-11T18:44:52","modified_gmt":"2019-11-11T21:44:52","slug":"um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/","title":{"rendered":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Neste artigo vamos verificar como a coleta do valor de <a href=\"http:\/\/dbtimewizard.com.br\/blog\/o-que-voce-precisa-saber-sobre-o-uso-de-indices\/\" target=\"_blank\"><strong>CLUSTERING FACTOR<\/strong><\/a> de um \u00edndice pode influenciar de forma negativa\u00a0o plano de execu\u00e7\u00e3o de uma instru\u00e7\u00e3o SQL e o que podemos fazer para melhorar esta estat\u00edstica e ajudar o Otimizador a tomar uma decis\u00e3o mais assertiva.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O <strong>CLUSTERING FACTOR<\/strong> \u00e9 uma das estat\u00edsticas mais importantes na tomada de decis\u00e3o pelo Otimizador quanto a viabilidade de utiliza\u00e7\u00e3o de um \u00edndice num plano de execu\u00e7\u00e3o, esta estat\u00edstica deveria refletir o qu\u00e3o bem ordenados os dados da tabela est\u00e3o em rela\u00e7\u00e3o \u00e0s entradas do \u00edndice. Portanto quanto melhor (menor) o CF, mais eficiente seria usar o \u00edndice, j\u00e1 que menos blocos da tabela seriam acessados para recuperar os dados.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O <strong>CLUSTERING FACTOR<\/strong> \u00e9 calculado atrav\u00e9s de um <strong>FULL INDEX SCAN<\/strong> que analisa o <strong>ROWID<\/strong> de cada entrada do \u00edndice e compara com o da entrada anterior, o incremento do valor do CF ocorre da seguinte forma:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1) Caso o <strong>bloco da tabela<\/strong> que est\u00e1 sendo referenciado no ROWID <strong>seja diferente<\/strong> daquele da entrada de \u00edndice anterior, <strong>o CF \u00e9 incrementado<\/strong>. <\/span><br \/>\n<span style=\"font-size: 12pt;\">2) Caso o <strong>bloco da tabela<\/strong> que est\u00e1 sendo referenciado no ROWID <strong>seja igual<\/strong> ao da entrada de \u00edndice anterior, <strong>o CF n\u00e3o \u00e9 incrementado<\/strong>.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Este algoritmo pode apresentar problemas em algumas situa\u00e7\u00f5es, como neste caso: imagine uma tabela onde 200 linhas ser\u00e3o inseridas por duas sess\u00f5es simultaneamente, cada uma insere 100 linhas e uma coluna da linha que ser\u00e1 indexada recebe um valor num\u00e9rico que \u00e9 incrementado por uma <strong>SEQUENCE<\/strong>. Utilizando <strong>2 FREELISTS<\/strong>, uma sess\u00e3o vai inserir as linhas em um bloco enquanto a outra vai inserir em um segundo bloco, com os valores da <strong>SEQUENCE<\/strong> sendo distribu\u00eddos aleatoriamente entre os dois blocos. Desta forma a coleta de estat\u00edsticas do \u00edndice vai registrar um valor de CF pr\u00f3ximo de 200, j\u00e1 que os valores sequenciais gerados pela SEQUENCE para a coluna deste \u00edndice s\u00e3o misturados ou alternados entre os blocos. Este valor de CF far\u00e1 com que o Otimizador desconsidere a utiliza\u00e7\u00e3o do \u00edndice, embora as entradas do \u00edndice estejam bem agrupadas nos blocos da tabela.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para facilitar a compreens\u00e3o deste problema, vamos realizar uma simula\u00e7\u00e3o pr\u00e1tica com as seguintes etapas:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1) Criar uma <strong>tabela<\/strong>, uma <strong>sequence<\/strong> e uma <strong>procedure<\/strong> para inserir linhas na tabela<\/span><br \/>\n<span style=\"font-size: 12pt;\">2) Executar a procedure em <strong>4 sess\u00f5es SQL*PLUS simultaneamente<\/strong><\/span><br \/>\n<span style=\"font-size: 12pt;\">3) Criar um \u00edndice, coletar as estat\u00edsticas e verificar o <strong>CLUSTERING FACTOR<\/strong><\/span><br \/>\n<span style=\"font-size: 12pt;\">4) Executar uma consulta na tabela criada e verificar o plano de execu\u00e7\u00e3o<\/span><br \/>\n<span style=\"font-size: 12pt;\">5) Alterar o par\u00e2metro <strong>TABLE_CACHED_BLOCKS<\/strong>, coletar as estat\u00edsticas e verificar o <strong>CLUSTERING FACTOR<\/strong><\/span><br \/>\n<span style=\"font-size: 12pt;\">6) Executar a mesma consulta novamente e verificar o plano de execu\u00e7\u00e3o<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1) Criar a tabela, sequence e a procedure<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\">Vamos criar os objetos necess\u00e1rios para realizar a nossa simula\u00e7\u00e3o:\u00a0<\/span><br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/><\/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 dbtw052 <span class=\"br0\">&#40;<\/span>matricula number<span class=\"sy0\">,<\/span> Nome varchar2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">50<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><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 sequence dbtw052_seq order<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSequ\u00eancia criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE OR REPLACE PROCEDURE proc_dbtw052 <span class=\"kw1\">AS<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;BEGIN<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; <span class=\"kw1\">FOR<\/span> i IN <span class=\"nu0\">1<\/span><span class=\"sy0\">..<\/span><span class=\"nu0\">100000<\/span> LOOP<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; INSERT INTO dbtw052 VALUES <span class=\"br0\">&#40;<\/span>dbtw052_seq<span class=\"sy0\">.<\/span>NEXTVAL<span class=\"sy0\">,<\/span> <span class=\"st_h\">'DBTimeWizard - Oracle Performance and Tuning'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; COMMIT<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp;<span class=\"sy0\">\/<\/span><br \/>\n<br \/>\nProcedimento criado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT table_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; T<span class=\"sy0\">.<\/span>tablespace_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; segment_space_management<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp;FROM dba_tables T<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; dba_tablespaces F<br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; WHERE T<span class=\"sy0\">.<\/span>tablespace_name <span class=\"sy0\">=<\/span> F<span class=\"sy0\">.<\/span>tablespace_name<br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; AND table_name<span class=\"sy0\">=<\/span><span class=\"st_h\">'DBTW052'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTABLE_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TABLESPACE_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;SEGMEN<br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">------<\/span><br \/>\nDBTW052 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DBTW &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; AUTO<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2) Executar a procedure em 4 sess\u00f5es simult\u00e2neas<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Executando a procedure em sess\u00f5es paralelas e com a tabela definida numa TABLESPACE cujo <strong>gerenciamento dos seguimentos \u00e9 ASSM<\/strong>, cada sess\u00e3o vai inserir as linhas em um bloco diferente da outra, criando um cen\u00e1rio parecido com aquele descrito na introdu\u00e7\u00e3o do artigo.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL<span class=\"sy0\">-<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> proc_dbtw052<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 \/>\nDecorrido<span class=\"sy0\">:<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">08.95<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">&gt;<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">02<\/span> <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> proc_dbtw052<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 \/>\nDecorrido<span class=\"sy0\">:<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.65<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">02<\/span> <span class=\"sy0\">&gt;<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">03<\/span> <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> proc_dbtw052<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 \/>\nDecorrido<span class=\"sy0\">:<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">09.03<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">03<\/span> <span class=\"sy0\">&gt;<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">04<\/span> <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> proc_dbtw052<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 \/>\nDecorrido<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\">57.83<\/span><br \/>\nSQL<span class=\"sy0\">-<\/span><span class=\"nu8\">04<\/span> <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">3) Criar um \u00edndice e coletar as estat\u00edsticas<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> CREATE INDEX dbtw052_matr_idx ON dbtw052<span class=\"br0\">&#40;<\/span>matricula<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><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>ownname<span class=\"sy0\">=&gt;<\/span>user<span class=\"sy0\">,<\/span> tabname<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'DBTW052'<\/span><span class=\"sy0\">,<\/span> estimate_percent<span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">null<\/span><span class=\"sy0\">,<\/span> cascade<span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">true<\/span><span class=\"sy0\">,<\/span> method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR ALL COLUMNS SIZE 1'<\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT T<span class=\"sy0\">.<\/span>table_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; I<span class=\"sy0\">.<\/span>index_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; T<span class=\"sy0\">.<\/span>blocks<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; T<span class=\"sy0\">.<\/span>num_rows<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; I<span class=\"sy0\">.<\/span>clustering_factor<br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp;FROM user_tables T<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; user_indexes I<br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; WHERE T<span class=\"sy0\">.<\/span>table_name <span class=\"sy0\">=<\/span> I<span class=\"sy0\">.<\/span>table_name<br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; &nbsp; AND I<span class=\"sy0\">.<\/span>index_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW052_MATR_IDX'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTABLE_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INDEX_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BLOCKS &nbsp; NUM_ROWS CLUSTERING_FACTOR<br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-----------------<\/span><br \/>\nDBTW052 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DBTW052_MATR_IDX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">3142<\/span> &nbsp; &nbsp; <span class=\"nu0\">400000<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">266796<\/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;\">Analisando as estat\u00edsticas da tabela e do \u00edndice verificamos que a <strong>tabela tem<\/strong> <strong>3142 blocos<\/strong> e o valor do <strong>CLUSTERING FACTOR \u00e9 266.796<\/strong>, muito pr\u00f3ximo do valor total de <strong>linhas da tabela que \u00e9 400.000<\/strong>.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">4) Executar uma consulta na tabela criada<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\">Vamos executar uma consulta na tabela e verificar a efici\u00eancia do plano de execu\u00e7\u00e3o:<\/span><br \/>\n&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/><\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* dbtw521 *\/<\/span> <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw052<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE matricula BETWEEN <span class=\"nu0\">42<\/span> AND <span class=\"nu0\">319<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp;MATRICULA NOME<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">--------------------------------------------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">271<\/span> DBTimeWizard <span class=\"sy0\">-<\/span> Oracle Performance and Tuning &nbsp; &nbsp; &nbsp; <br \/>\n&nbsp; <span class=\"sy0\">.<\/span><br \/>\n&nbsp; <span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">270<\/span> DBTimeWizard <span class=\"sy0\">-<\/span> Oracle Performance and Tuning<br \/>\n<br \/>\n<span class=\"nu0\">278<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE sql_text LIKE <span class=\"st_h\">'%dbtw521%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CHILD_NUMBER<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n6ab5c2j6jfk8m &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'6ab5c2j6jfk8m'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nSQL_ID &nbsp;6ab5c2j6jfk8m<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* dbtw521 *\/<\/span> <span class=\"sy0\">*<\/span> &nbsp; FROM dbtw052 &nbsp;WHERE matricula BETWEEN<br \/>\n<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span> AND <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_1&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">2174329534<\/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><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;<span class=\"nu0\">278<\/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.71<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">3109<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;FILTER &nbsp; &nbsp; &nbsp; &nbsp; &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; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">278<\/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.71<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">3109<\/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> DBTW052 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">279<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">278<\/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.71<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">3109<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span>SYS_B_1<span class=\"sy0\">&gt;=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><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;MATRICULA&quot;<\/span><span class=\"sy0\">&lt;=:<\/span>SYS_B_1 AND <span class=\"st0\">&quot;MATRICULA&quot;<\/span><span class=\"sy0\">&gt;=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">21<\/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;\">Analisando o plano verificamos que foram <strong>selecionadas 278 linhas<\/strong> e o Otimizador decidiu fazer uma <strong>opera\u00e7\u00e3o TABLE FULL SCAN<\/strong> pois ele estimou que se utilizasse o \u00edndice teria que acessar um numero de blocos da tabela pr\u00f3ximo do numero de linhas selecionadas, isto <strong>baseado no valor do CLUSTERING FACTOR<\/strong>.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">5) Alterar o par\u00e2metro, coletar as estat\u00edsticas e verificar o CF<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para melhorar a assertividade do valor CF vamos <strong>alterar o par\u00e2metro TABLE_CACHED_BLOCKS de 1 para 38<\/strong> e coletar novas estat\u00edsticas<\/span>.<\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> COL TABLE_CACHED_BLOCKS <span class=\"kw1\">FOR<\/span> A30<span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT table_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; DBMS_STATS<span class=\"sy0\">.<\/span>GET_PREFS<span class=\"br0\">&#40;<\/span>ownname<span class=\"sy0\">=&gt;<\/span>USER<span class=\"sy0\">,<\/span>tabname<span class=\"sy0\">=&gt;<\/span>table_name<span class=\"sy0\">,<\/span>pname<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'TABLE_CACHED_BLOCKS'<\/span><span class=\"br0\">&#41;<\/span> TABLE_CACHED_BLOCKS<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp;FROM dba_tables<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; WHERE table_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW052'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTABLE_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; TABLE_CACHED_BLOCKS<br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">------------------------------<\/span><br \/>\nDBTW052 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/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>SET_TABLE_PREFS<span class=\"br0\">&#40;<\/span>OWNNAME<span class=\"sy0\">=&gt;<\/span>user<span class=\"sy0\">,<\/span> TABNAME<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'DBTW052'<\/span><span class=\"sy0\">,<\/span> PNAME<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'TABLE_CACHED_BLOCKS'<\/span><span class=\"sy0\">,<\/span> PVALUE<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">38<\/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><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_INDEX_STATS<span class=\"br0\">&#40;<\/span>OWNNAME<span class=\"sy0\">=&gt;<\/span>user<span class=\"sy0\">,<\/span> INDNAME<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'DBTW052_MATR_IDX'<\/span><span class=\"sy0\">,<\/span> ESTIMATE_PERCENT<span class=\"sy0\">=&gt;<\/span> <span class=\"kw4\">null<\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT T<span class=\"sy0\">.<\/span>table_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; I<span class=\"sy0\">.<\/span>index_name<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; T<span class=\"sy0\">.<\/span>blocks<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; T<span class=\"sy0\">.<\/span>num_rows<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; I<span class=\"sy0\">.<\/span>clustering_factor<br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp;FROM user_tables T<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; user_indexes I<br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; WHERE T<span class=\"sy0\">.<\/span>table_name <span class=\"sy0\">=<\/span> I<span class=\"sy0\">.<\/span>table_name<br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; &nbsp; AND I<span class=\"sy0\">.<\/span>index_name <span class=\"sy0\">=<\/span> <span class=\"st_h\">'DBTW052_MATR_IDX'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTABLE_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; INDEX_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; BLOCKS &nbsp; NUM_ROWS CLUSTERING_FACTOR<br \/>\n<span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">------------------------------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-----------------<\/span><br \/>\nDBTW052 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;DBTW052_MATR_IDX &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">3142<\/span> &nbsp; &nbsp; <span class=\"nu0\">400000<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">3038<\/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;\">Ap\u00f3s a coleta das novas estat\u00edsticas podemos observar que o <strong>CLUSTERING FACTOR (CF) diminuiu de 266796 para 3038<\/strong> que \u00e9 um valor bem pr\u00f3ximo do <strong>numero de blocos da tabela (3142)<\/strong>.<\/span><\/p>\n<h2><span style=\"font-size: 14pt;\">6) Executar a mesma consulta novamente e verificar o plano de execu\u00e7\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Feito o ajuste no CF vamos executar a consulta novamente e verificar se o \u00edndice vai ser utilizado e se vamos ter algum ganho de desempenho na consulta.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/><\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* dbtw522 *\/<\/span> <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw052<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE matricula BETWEEN <span class=\"nu0\">42<\/span> AND <span class=\"nu0\">319<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp;MATRICULA NOME<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">--------------------------------------------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">42<\/span> DBTimeWizard <span class=\"sy0\">-<\/span> Oracle Performance and Tuning<br \/>\n&nbsp; <span class=\"sy0\">.<\/span><br \/>\n&nbsp; <span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">319<\/span> DBTimeWizard <span class=\"sy0\">-<\/span> Oracle Performance and Tuning<br \/>\n<br \/>\n<span class=\"nu0\">278<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column child_number new_value m_child_no<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT sql_id<span class=\"sy0\">,<\/span> child_number<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM v<span class=\"re0\">$sql<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE sql_text LIKE <span class=\"st_h\">'%dbtw522%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; CHILD_NUMBER<br \/>\n<span class=\"sy0\">----------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\ndzgjfpgbutxpp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">2<\/span><span class=\"sy0\">:<\/span> &nbsp; FROM TABLE <span class=\"br0\">&#40;<\/span>dbms_xplan<span class=\"sy0\">.<\/span>display_cursor <span class=\"br0\">&#40;<\/span><span class=\"st_h\">'dzgjfpgbutxpp'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nSQL_ID &nbsp;dzgjfpgbutxpp<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* dbtw522 *\/<\/span> <span class=\"sy0\">*<\/span> &nbsp; FROM dbtw052 &nbsp;WHERE matricula BETWEEN<br \/>\n<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span> AND <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_1&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">2969862332<\/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; &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><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; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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\">278<\/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\">44<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;FILTER &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &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\">278<\/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\">44<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> DBTW052 &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\">279<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">278<\/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\">44<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">3<\/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> DBTW052_MATR_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">279<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">278<\/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\">22<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span>SYS_B_1<span class=\"sy0\">&gt;=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;MATRICULA&quot;<\/span><span class=\"sy0\">&gt;=:<\/span>SYS_B_0 AND <span class=\"st0\">&quot;MATRICULA&quot;<\/span><span class=\"sy0\">&lt;=:<\/span>SYS_B_1<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;\">Verificando o plano de execu\u00e7\u00e3o observamos que o \u00edndice foi utilizado e o n\u00famero de Buffers acessados caiu de 3109 na primeira consulta para 44 nesta consulta que utilizou o \u00edndice.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Conclus\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O par\u00e2metro <strong>TABLE_CACHED_BLOCKS<\/strong> foi uma melhoria implementada no <strong>pacote DBMS_STATS<\/strong> no <strong>Oracle Database 11.2.0.4<\/strong>, com ele podemos aprimorar a qualidade do CF e dar ao Otimizador uma vis\u00e3o mais consistente da distribui\u00e7\u00e3o das linhas na tabela e sua rela\u00e7\u00e3o com as entradas no \u00edndice. Quando estiver avaliando o desempenho de uma instru\u00e7\u00e3o SQL e constatar que um \u00edndice que poderia melhorar o desempenho n\u00e3o esta sendo utilizado, considere a possibilidade do CF n\u00e3o estar refletindo a real rela\u00e7\u00e3o de ordena\u00e7\u00e3o entre as entradas do \u00edndice e as linhas nos blocos da tabela.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias<\/span><\/h2>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"https:\/\/docs.oracle.com\/cd\/E11882_01\/server.112\/e41573\/optimops.htm#i82433\" target=\"_blank\">https:\/\/docs.oracle.com\/cd\/E11882_01\/server.112<\/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>Neste artigo vamos verificar como a coleta do valor de CLUSTERING FACTOR de um \u00edndice pode influenciar de forma negativa\u00a0o plano de execu\u00e7\u00e3o de uma instru\u00e7\u00e3o SQL e o que podemos fazer para melhorar esta estat\u00edstica e ajudar o Otimizador a tomar uma decis\u00e3o mais assertiva. O CLUSTERING FACTOR \u00e9 uma das estat\u00edsticas mais importantes na tomada de decis\u00e3o pelo<\/p>\n","protected":false},"author":2,"featured_media":1660,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[6,178,42,163,10,199],"class_list":["post-1659","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-estatisticas","tag-cbo","tag-clustering-factor","tag-cost-base-optimizer","tag-dbms_stats","tag-otimizador","tag-table_cached_blocks"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.\" \/>\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\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/\" \/>\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=\"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard\" \/>\n\t\t<meta property=\"og:description\" content=\"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2018-06-10T23:45:34+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-11-11T21:44:52+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.\" \/>\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\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#article\",\"name\":\"Um truque que voc\\u00ea n\\u00e3o conhece sobre coleta de estat\\u00edsticas | DBTimeWizard\",\"headline\":\"Um truque que voc\\u00ea n\\u00e3o conhece sobre coleta de estat\\u00edsticas\",\"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\\\/2018\\\/06\\\/truque.jpg\",\"width\":387,\"height\":378,\"caption\":\"coleta de estatisticas\"},\"datePublished\":\"2018-06-10T20:45:34-03:00\",\"dateModified\":\"2019-11-11T18:44:52-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#webpage\"},\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#webpage\"},\"articleSection\":\"Estat\\u00edsticas, CBO, CLUSTERING FACTOR, COST BASE OPTIMIZER, DBMS_STATS, Otimizador, TABLE_CACHED_BLOCKS\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#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\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#listItem\",\"name\":\"Um truque que voc\\u00ea n\\u00e3o conhece sobre coleta de estat\\u00edsticas\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#listItem\",\"position\":3,\"name\":\"Um truque que voc\\u00ea n\\u00e3o conhece sobre coleta de estat\\u00edsticas\",\"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\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#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\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#webpage\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/\",\"name\":\"Um truque que voc\\u00ea n\\u00e3o conhece sobre coleta de estat\\u00edsticas | DBTimeWizard\",\"description\":\"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\\u00e7\\u00e3o de um \\u00edndice necess\\u00e1rio para a melhoraria de desempenho de uma consulta.\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#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\\\/2018\\\/06\\\/truque.jpg\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#mainImage\",\"width\":387,\"height\":378,\"caption\":\"coleta de estatisticas\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\\\/#mainImage\"},\"datePublished\":\"2018-06-10T20:45:34-03:00\",\"dateModified\":\"2019-11-11T18:44:52-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":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard","description":"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.","canonical_url":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#article","name":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard","headline":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas","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\/2018\/06\/truque.jpg","width":387,"height":378,"caption":"coleta de estatisticas"},"datePublished":"2018-06-10T20:45:34-03:00","dateModified":"2019-11-11T18:44:52-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#webpage"},"isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#webpage"},"articleSection":"Estat\u00edsticas, CBO, CLUSTERING FACTOR, COST BASE OPTIMIZER, DBMS_STATS, Otimizador, TABLE_CACHED_BLOCKS"},{"@type":"BreadcrumbList","@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#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\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#listItem","name":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas"},"previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","name":"In\u00edcio"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#listItem","position":3,"name":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas","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\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#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\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#webpage","url":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/","name":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard","description":"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#website"},"breadcrumb":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#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\/2018\/06\/truque.jpg","@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#mainImage","width":387,"height":378,"caption":"coleta de estatisticas"},"primaryImageOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/#mainImage"},"datePublished":"2018-06-10T20:45:34-03:00","dateModified":"2019-11-11T18:44:52-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":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard","og:description":"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.","og:url":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/","article:published_time":"2018-06-10T23:45:34+00:00","article:modified_time":"2019-11-11T21:44:52+00:00","twitter:card":"summary","twitter:title":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | DBTimeWizard","twitter:description":"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta."},"aioseo_meta_data":{"post_id":"1659","title":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas | #site_title","description":"Vamos ver como melhorar o valor do CLUSTERING FACTOR que impede a utiliza\u00e7\u00e3o de um \u00edndice necess\u00e1rio para a melhoraria de desempenho de uma consulta.","keywords":[{"label":"DBMS_STATS","value":"DBMS_STATS"},{"label":"TABLE_CACHED_BLOCKS","value":"TABLE_CACHED_BLOCKS"},{"label":"CLUSTERING FACTOR","value":"CLUSTERING FACTOR"},{"label":"Otimizador","value":"Otimizador"},{"label":"CBO","value":"CBO"},{"label":"COST BASE OPTIMIZER","value":"COST BASE OPTIMIZER"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-12-05 15:15:18","updated":"2026-03-19 14:37:29","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\tUm truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas\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":"Um truque que voc\u00ea n\u00e3o conhece sobre coleta de estat\u00edsticas","link":"http:\/\/dbtimewizard.com.br\/blog\/um-truque-que-voce-nao-conhece-sobre-coleta-de-estatisticas\/"}],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1659","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=1659"}],"version-history":[{"count":22,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1659\/revisions"}],"predecessor-version":[{"id":2075,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1659\/revisions\/2075"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/1660"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1659"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1659"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1659"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}