{"id":1393,"date":"2018-03-04T22:34:32","date_gmt":"2018-03-05T01:34:32","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=1393"},"modified":"2019-11-11T18:47:06","modified_gmt":"2019-11-11T21:47:06","slug":"por-que-100-linhas-a-mais-numa-tabela-podem-prejudicar-o-desempenho-de-uma-consulta","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/por-que-100-linhas-a-mais-numa-tabela-podem-prejudicar-o-desempenho-de-uma-consulta\/","title":{"rendered":"Por que 100 linhas a mais numa tabela podem prejudicar o desempenho de uma consulta?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Voc\u00ea acredita que uma consulta numa tabela com mais de 300 mil linhas possa ter seu <a href=\"http:\/\/dbtimewizard.com.br\/blog\/execution-plan-como-verificar-a-ordem-que-as-operacoes-sao-realizadas\/\" target=\"_blank\"><strong>plano de execu\u00e7\u00e3o<\/strong><\/a> alterado pelo Otimizador quando inserimos mais 100 linhas na tabela? Neste artigo vamos ver uma simula\u00e7\u00e3o onde isto ocorre, explicar por que ocorre e quais s\u00e3o as alternativas para evitar este tipo de situa\u00e7\u00e3o.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Nossa simula\u00e7\u00e3o utilizar\u00e1 uma consulta muito simples que faz a <a href=\"http:\/\/dbtimewizard.com.br\/blog\/nested-loop-ou-hash-join-qual-a-melhor-opcao-para-juncao-de-tabelas\/\" target=\"_blank\"><strong>jun\u00e7\u00e3o em duas tabelas<\/strong><\/a>, uma com 300 mil linhas e outra com 1 milh\u00e3o de linhas e como resultado da consulta temos 62 linhas, o plano de execu\u00e7\u00e3o original utiliza a opera\u00e7\u00e3o NESTED LOOPS JOIN. Ap\u00f3s inserirmos 100 linhas na tabela de 300 mil linhas o Otimizador utilizar\u00e1 um novo plano de execu\u00e7\u00e3o que passar\u00e1 a utilizar a opera\u00e7\u00e3o HASH JOIN, com esta mudan\u00e7a no plano de execu\u00e7\u00e3o o tempo de resposta da consulta vai aumentar 128%.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para realizar esta simula\u00e7\u00e3o vamos:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1) Criar 2 tabelas com um \u00edndice numa das tabelas<br \/>\n2) Verificar o custo atribu\u00eddo pelo Otimizador para acessar uma linha da tabela<br \/>\n3) Executar a consulta que faz jun\u00e7\u00e3o das duas tabelas e verificar a estat\u00edsticas de performance<br \/>\n4) Executar a opera\u00e7\u00e3o INSERT para adicionar mais 100 linhas numa das tabelas<br \/>\n5) Verificar o custo atribu\u00eddo pelo Otimizador para acessar uma linha da tabela ap\u00f3s a opera\u00e7\u00e3o de INSERT<br \/>\n6) Executar a consulta de jun\u00e7\u00e3o novamente e verificar o novo plano de execu\u00e7\u00e3o gerado pelo Otimizador<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1) Criar as tabelas da simula\u00e7\u00e3o<\/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 \/>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 \/><\/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 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> DROP TABLE dbtw002 purge<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela eliminada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw002<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;<span class=\"kw1\">AS<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;SELECT rownum col1<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; mod<span class=\"br0\">&#40;<\/span>rownum<span class=\"sy0\">,<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span> col2<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st_h\">'dbtimewizard.com.br'<\/span> col3<br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp;FROM dual<br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;CONNECT BY level <span class=\"sy0\">&lt;=<\/span> <span class=\"nu0\">302355<\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create index dbtw002_idx on dbtw002<span class=\"br0\">&#40;<\/span>col1<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> <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\">'DBTW002'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'for all columns size auto'<\/span><span class=\"sy0\">,<\/span>cascade<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/span><span class=\"sy0\">,<\/span>force<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/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 blevel<span class=\"sy0\">,<\/span> leaf_blocks<span class=\"sy0\">,<\/span> clustering_factor from dba_indexes where index_name<span class=\"sy0\">=<\/span><span class=\"st_h\">'DBTW002_IDX'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; BLEVEL LEAF_BLOCKS CLUSTERING_FACTOR<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">-----------<\/span> <span class=\"sy0\">-----------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">672<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1380<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> DROP TABLE dbtw004 purge<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela eliminada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw004<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp;<span class=\"kw1\">AS<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;SELECT rownum col1<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; mod<span class=\"br0\">&#40;<\/span>rownum<span class=\"sy0\">,<\/span><span class=\"nu0\">10000<\/span><span class=\"br0\">&#41;<\/span> col2<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"st_h\">'*DBTIMEWIZARD*'<\/span> col3<br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp;FROM dual<br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp;CONNECT BY level <span class=\"sy0\">&lt;=<\/span> <span class=\"nu0\">1000000<\/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><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\">'DBTW004'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'for all columns size auto'<\/span><span class=\"sy0\">,<\/span>cascade<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/span><span class=\"sy0\">,<\/span>force<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/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><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Observando acima a consulta na vis\u00e3o DBA_INDEXES verificamos que o \u00edndice criado tem BLEVEL=1 e LEAF_BLOCKS=672, isto significa que o \u00edndice tem somente um bloco (ROOT_BLOCK) que endere\u00e7a os 672 LEAF BLOCKS, consequentemente para obter o ROW_ID de uma linha na tabela o banco vai acessar 2 blocos (ROOT BLOCK e 1 LEAF BLOCK).<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2) Verificar o CUSTO para acessar uma linha da tabela<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos realizar uma consulta na tabela onde criamos o \u00edndice e selecionar apenas uma linha para verificar quantos blocos ser\u00e3o acessados pelo banco e qual o custo atribu\u00eddo pelo Otimizador.<\/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 \/><\/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\">\/* DBTW111 *\/<\/span> <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw002<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">51<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 &nbsp; &nbsp; &nbsp; COL2 COL3<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-------------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">--<\/span> Recupera o SQL_ID e o CHILD_NUMBER &nbsp;da consulta executada<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\">'%DBTW111%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n2wj8c06ccrcuy &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> <span class=\"sy0\">--<\/span> Gera o relat\u00f3rio <span class=\"kw1\">do<\/span> plano de execu\u00e7\u00e3o da consulta<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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'2wj8c06ccrcuy'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;2wj8c06ccrcuy<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW111 *\/<\/span> <span class=\"sy0\">*<\/span> &nbsp; FROM dbtw002 &nbsp;WHERE col1 <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">3681438309<\/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; <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>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &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=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">4<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> DBTW002 &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">28<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">4<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &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> DBTW002_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> 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 acima constatamos que a opera\u00e7\u00e3o ID 2 (INDEX RANGE SCAN) acessa 3 Blocos no Buffer Cache ( 1 ROOT BLOCK, 1 LEAF BLOCK e como o \u00edndice criado n\u00e3o \u00e9 UNIQUE um terceiro bloco para ver se existe mais alguma linha com o valor especificado na cl\u00e1usula WHERE). O custo atribu\u00eddo pelo Otimizador para esta opera\u00e7\u00e3o foi 1 e para recuperar a linha na tabela ser\u00e1 necess\u00e1rio acessar mais um bloco com custo de opera\u00e7\u00e3o igual a 1, portanto teremos um custo total de 2 para recuperar 1 linha da tabela.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">3) Executar a consulta de jun\u00e7\u00e3o das tabelas<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos executar uma consulta com a jun\u00e7\u00e3o das duas tabelas e verificar as estat\u00edsticas no plano de execu\u00e7\u00e3o.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/><\/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 <span class=\"coMULTI\">\/* DBTW112 *\/<\/span> <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw004 A<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; dbtw002 B<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; WHERE A<span class=\"sy0\">.<\/span>col1<span class=\"sy0\">=<\/span>B<span class=\"sy0\">.<\/span>col1<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; AND A<span class=\"sy0\">.<\/span>col2 in <span class=\"br0\">&#40;<\/span><span class=\"nu0\">51<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">151<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 &nbsp; &nbsp; &nbsp; COL2 COL3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COL1 &nbsp; &nbsp; &nbsp; COL2 COL3<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><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">10051<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">10051<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">10151<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">10151<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; <span class=\"nu0\">300151<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; <span class=\"nu0\">300151<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n<br \/>\n<span class=\"nu0\">62<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">--<\/span> Recupera o SQL_ID e o CHILD_NUMBER &nbsp;da consulta executada<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\">'%DBTW112%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n5v1qcshkcgm74 &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> <span class=\"sy0\">--<\/span> Gera o relat\u00f3rio <span class=\"kw1\">do<\/span> plano de execu\u00e7\u00e3o da consulta<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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'5v1qcshkcgm74'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;5v1qcshkcgm74<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW112 *\/<\/span> <span class=\"sy0\">*<\/span> &nbsp; FROM dbtw004 A<span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp;dbtw002 B &nbsp;WHERE<br \/>\nA<span class=\"sy0\">.<\/span>col1<span class=\"sy0\">=<\/span>B<span class=\"sy0\">.<\/span>col1 &nbsp; &nbsp;AND A<span class=\"sy0\">.<\/span>col2 in <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><span class=\"sy0\">,:<\/span><span class=\"st0\">&quot;SYS_B_1&quot;<\/span><span class=\"br0\">&#41;<\/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\">1144161524<\/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>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &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=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1386<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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.07<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4146<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;NESTED LOOPS &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\">200<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">10400<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1386<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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.07<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4146<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; NESTED LOOPS &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\">200<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">10400<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1386<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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.07<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4104<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;TABLE ACCESS FULL &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> DBTW004 &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">200<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">4800<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1125<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">200<\/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.07<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4025<\/span> <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> DBTW002_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">200<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">1<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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\">79<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> DBTW002 &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">28<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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\">42<\/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\">3<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL2&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0 OR <span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL2&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_1<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"nu0\">4<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;B&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">24<\/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 de execu\u00e7\u00e3o verificamos que a consulta retornou 62 linhas, o plano de execu\u00e7\u00e3o escolhido pelo Otimizador faz a jun\u00e7\u00e3o das duas tabelas utilizando a opera\u00e7\u00e3o NESTED LOOPS e o tempo de dura\u00e7\u00e3o da consulta foi 7 cent\u00e9simos de segundo.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">4) Executar a opera\u00e7\u00e3o INSERT<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Abaixo vamos inserir mais 100 linhas na tabela DBTW002 e verificar o BLEVEL do \u00edndice.<\/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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> insert into dbtw002 select rownum<span class=\"sy0\">+<\/span><span class=\"nu0\">302355<\/span><span class=\"sy0\">,<\/span> mod<span class=\"br0\">&#40;<\/span>rownum<span class=\"sy0\">,<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'dbtimewizard.com.br'<\/span> from dual connect by level <span class=\"sy0\">&lt;=<\/span><span class=\"nu0\">100<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">100<\/span> linhas criadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> commit<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit conclu\u00ed<span class=\"kw1\">do<\/span><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\">'DBTW002'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'for all columns size auto'<\/span><span class=\"sy0\">,<\/span>cascade<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/span><span class=\"sy0\">,<\/span>force<span class=\"sy0\">=&gt;<\/span><span class=\"kw4\">true<\/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> select blevel<span class=\"sy0\">,<\/span> leaf_blocks<span class=\"sy0\">,<\/span> clustering_factor from dba_indexes where index_name<span class=\"sy0\">=<\/span><span class=\"st_h\">'DBTW002_IDX'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; BLEVEL LEAF_BLOCKS CLUSTERING_FACTOR<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">-----------<\/span> <span class=\"sy0\">-----------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">673<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1381<\/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;\">Consultando a estrutura do \u00edndice ap\u00f3s a inser\u00e7\u00e3o das 100 linhas verificamos que o BLEVEL foi alterado para 2, ou seja a estrutura do \u00edndice agora \u00e9 formada por 1 ROOT BLOCK, 2 BRANCH BLOCKS e 673 LEAF BLOCKS.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">5) Verificar o CUSTO para acessar uma linha da tabela ap\u00f3s INSERT<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos realizar a consulta selecionando\u00a0 uma linha da tabela DBTW002 novamente e verificar qual foi o custo atribu\u00eddo pelo Otimizador para a consulta ap\u00f3s a inser\u00e7\u00e3o de 100 linhas na tabela.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/><\/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\">\/* DBTW113 *\/<\/span> <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw002<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; WHERE col1 <span class=\"sy0\">=<\/span> <span class=\"nu0\">51<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 &nbsp; &nbsp; &nbsp; COL2 COL3<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span> <span class=\"sy0\">-------------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">--<\/span> Recupera o SQL_ID e o CHILD_NUMBER &nbsp;da consulta executada<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\">'%DBTW113%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\ng74180qy0pmtp &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> <span class=\"sy0\">--<\/span> Gera o relat\u00f3rio <span class=\"kw1\">do<\/span> plano de execu\u00e7\u00e3o da consulta<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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'g74180qy0pmtp'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;g74180qy0pmtp<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW113 *\/<\/span> <span class=\"sy0\">*<\/span> &nbsp; FROM dbtw002 &nbsp;WHERE col1 <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><br \/>\n<br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">3681438309<\/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; <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>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &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=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">4<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> DBTW002 &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">28<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">4<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &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> DBTW002_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">3<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu19\">00.01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"nu0\">4<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> 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 acima que opera\u00e7\u00e3o ID 2 (INDEX RANGE SCAN) agora passou a acessar 4 blocos no Buffer Cache e o custo que era igual a 1 antes do INSERT das 100 linhas, agora \u00e9 3 e o custo total da consulta passou de 2 para 4.\u00a0<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">6) Executar a consulta de jun\u00e7\u00e3o das tabelas novamente<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para finalizar vamos executar a mesma consulta de jun\u00e7\u00e3o das tabelas ap\u00f3s a inser\u00e7\u00e3o das 100 linhas e verificar qual foi o impacto desta altera\u00e7\u00e3o no plano de execu\u00e7\u00e3o.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/><\/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 <span class=\"coMULTI\">\/* DBTW114 *\/<\/span> <span class=\"sy0\">*<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp;FROM dbtw004 A<span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; dbtw002 B<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; WHERE A<span class=\"sy0\">.<\/span>col1<span class=\"sy0\">=<\/span>B<span class=\"sy0\">.<\/span>col1<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; AND A<span class=\"sy0\">.<\/span>col2 in <span class=\"br0\">&#40;<\/span><span class=\"nu0\">51<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">151<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; &nbsp; COL1 &nbsp; &nbsp; &nbsp; COL2 COL3 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COL1 &nbsp; &nbsp; &nbsp; COL2 COL3<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><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">10051<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">10051<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; <span class=\"nu0\">300151<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">151<\/span> <span class=\"sy0\">*<\/span>DBTIMEWIZARD<span class=\"sy0\">*<\/span> &nbsp; &nbsp; <span class=\"nu0\">300151<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">51<\/span> dbtimewizard<span class=\"sy0\">.<\/span>com<span class=\"sy0\">.<\/span>br<br \/>\n<br \/>\n<span class=\"nu0\">62<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"sy0\">--<\/span> Recupera o SQL_ID e o CHILD_NUMBER &nbsp;da consulta executada<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\">'%DBTW114%'<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; AND sql_text NOT LIKE <span class=\"st_h\">'%v$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n<span class=\"sy0\">-------------<\/span> <span class=\"sy0\">------------<\/span><br \/>\n61j8yfydn1ud4 &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> <span class=\"sy0\">--<\/span> Gera o relat\u00f3rio <span class=\"kw1\">do<\/span> plano de execu\u00e7\u00e3o da consulta<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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nantigo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'&amp;m_sql_id'<\/span><span class=\"sy0\">,&amp;<\/span>m_child_no<span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\nnovo &nbsp; <span class=\"nu0\">1<\/span><span class=\"sy0\">:<\/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><span class=\"st_h\">'61j8yfydn1ud4'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'typical iostats last'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;61j8yfydn1ud4<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* DBTW114 *\/<\/span> <span class=\"sy0\">*<\/span> &nbsp; FROM dbtw004 A<span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp;dbtw002 B &nbsp;WHERE<br \/>\nA<span class=\"sy0\">.<\/span>col1<span class=\"sy0\">=<\/span>B<span class=\"sy0\">.<\/span>col1 &nbsp; &nbsp;AND A<span class=\"sy0\">.<\/span>col2 in <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_0&quot;<\/span><span class=\"sy0\">,:<\/span><span class=\"st0\">&quot;SYS_B_1&quot;<\/span><span class=\"br0\">&#41;<\/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\">248469155<\/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>E<span class=\"sy0\">-<\/span>Bytes<span class=\"sy0\">|<\/span> Cost <span class=\"br0\">&#40;<\/span><span class=\"sy0\">%<\/span>CPU<span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1531<\/span> <span class=\"br0\">&#40;<\/span><span class=\"nu0\">100<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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.16<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">5428<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">HASH<\/span><\/a> <a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> &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;<span class=\"nu0\">200<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">10400<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1531<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">62<\/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.16<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">5428<\/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> DBTW004 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">200<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">4800<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1125<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">200<\/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.07<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">4020<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS FULL<span class=\"sy0\">|<\/span> DBTW002 <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;302K<span class=\"sy0\">|<\/span> &nbsp;8270K<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">404<\/span> &nbsp; <span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span> <span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">00<\/span><span class=\"sy0\">:<\/span><span class=\"nu8\">01<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;302K<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.03<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1408<\/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> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;B&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL1&quot;<\/span><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;A&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL2&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_0 OR <span class=\"st0\">&quot;A&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;COL2&quot;<\/span><span class=\"sy0\">=:<\/span>SYS_B_1<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;\">Analisando o plano de execu\u00e7\u00e3o verificamos que a opera\u00e7\u00e3o de jun\u00e7\u00e3o escolhida pelo Otimizador passou a ser um HASH JOIN, o Otimizador escolheu este plano pois o custo do plano utilizando a opera\u00e7\u00e3o NESTED LOOPS passou de 1386 (antes do INSERT) para 1786 (ap\u00f3s o INSERT), a diferen\u00e7a de 400 foi adicionada ao custo total pois o custo para acessar uma linha no indice passou de 1 para 3 conforme demonstrado nas etapas 2 e 5. Como o custo total do plano com HASH JOIN foi de 1531 o Otimizador escolheu este plano pois o valor \u00e9 menor que 1786.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Observamos tamb\u00e9m que o tempo de reposta da consulta com o novo plano de execu\u00e7\u00e3o aumentou para 16 cent\u00e9simos de segundo, um aumento consider\u00e1vel de 128%. Estamos falando aqui de um aumento de 9 cent\u00e9simos de segundos em uma consulta, isso parece insignificante, mas temos que lembrar que algumas consultas podem executar milh\u00f5es de vezes num banco e se uma destas apresentar este tipo de situa\u00e7\u00e3o podemos ter um grande impacto no banco.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">CONCLUS\u00c3O<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Por incr\u00edvel que possa parecer o tipo de tabela utilizada nesse artigo \u00e9 muito comum nos banco de dados, s\u00e3o as famosas tabelas de par\u00e2metros das aplica\u00e7\u00f5es que s\u00e3o alteradas com pouca frequ\u00eancia, mas que podem apresentar uma situa\u00e7\u00e3o semelhante a que utilizamos nesta simula\u00e7\u00e3o. Para prevenir este tipo de problema existem algumas op\u00e7\u00f5es, podemos utilizar o <a href=\"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-como-sobreviver-sem-ela\/\" target=\"_blank\"><strong>SQL PLAN MANAGEMENT<\/strong><\/a> que vai controlar as mudan\u00e7as nos plano de execu\u00e7\u00e3o e impedir uma regress\u00e3o de performance, podemos fixar as estat\u00edsticas das tabelas impedindo que sejam atualizadas, podemos utilizar <a href=\"http:\/\/dbtimewizard.com.br\/blog\/sql-profile-uma-poderosa-aliada-no-processo-de-tuning\/\" target=\"_blank\"><strong>SQL PROFILE<\/strong><\/a> para fixar o plano de execu\u00e7\u00e3o. Voc\u00ea pode escolher qual a melhor op\u00e7\u00e3o para as bases que administra.<\/span><\/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\" 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>Voc\u00ea acredita que uma consulta numa tabela com mais de 300 mil linhas possa ter seu plano de execu\u00e7\u00e3o alterado pelo Otimizador quando inserimos mais 100 linhas na tabela? Neste artigo vamos ver uma simula\u00e7\u00e3o onde isto ocorre, explicar por que ocorre e quais s\u00e3o as alternativas para evitar este tipo de situa\u00e7\u00e3o. Nossa simula\u00e7\u00e3o utilizar\u00e1 uma consulta muito simples<\/p>\n","protected":false},"author":2,"featured_media":1394,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62],"tags":[192,194,193],"class_list":["post-1393","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-indice","tag-blevel","tag-estabilidade-do-plano-de-execucao","tag-execution-plan-stability"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1393","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=1393"}],"version-history":[{"count":30,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1393\/revisions"}],"predecessor-version":[{"id":2078,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1393\/revisions\/2078"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/1394"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1393"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1393"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1393"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}