{"id":15,"date":"2015-10-31T21:14:51","date_gmt":"2015-10-31T23:14:51","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=15"},"modified":"2019-11-11T19:05:42","modified_gmt":"2019-11-11T22:05:42","slug":"por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/","title":{"rendered":"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\u00e1 id\u00e9ia?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Os comandos do Oracle &#8220;Explain Plan&#8221; e &#8220;AUTOTRACE&#8221; s\u00e3o muito utilizados para gerar\u00a0o plano de execu\u00e7\u00e3o que o otimizador vai escolher para uma determinada instru\u00e7\u00e3o SQL. Porem nem sempre o plano de execu\u00e7\u00e3o gerado por estes comandos correspondem ao plano que realmente ser\u00e1 executado pelo otimizador do banco de dados, a \u00fanica maneira de descobrir qual plano de execu\u00e7\u00e3o ser\u00e1 utilizado para uma determinada instru\u00e7\u00e3o SQL \u00e9 obter o plano de execu\u00e7\u00e3o da vis\u00e3o din\u00e2minca V$SQL_PLAN usando o pacote DBMS_XPLAN.DISPLAY_CURSOR ou a sua pr\u00f3pria consulta personalizada.\u00a0<\/span><\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Isto ocorre devido ao fato de que os comandos &#8220;Explain Plan&#8221; e &#8220;AUTOTRACE&#8221; n\u00e3o passam pelo mesmo caminho de c\u00f3digo que o otimizador utiliza ao determinar um plano de execu\u00e7\u00e3o. Um dos exemplos mais simples desse comportamento \u00e9 quando utilizamos &#8220;Bind Variables&#8221; na instru\u00e7\u00e3o SQL. O comando &#8220;Explain Plan&#8221; ignora as &#8220;Binds&#8221; enquanto o otimizador as utiliza para determinar o melhor plano de execu\u00e7\u00e3o.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Demonstra\u00e7\u00e3o:<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\">Vamos criar uma tabela para o nosso teste com um \u00edndice e coletar estat\u00edsticas:<\/span><\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;\"><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 \/><\/div><\/td><td><div class=\"php codecolorer\">curso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> CREATE TABLE MY_OBJECTS <span class=\"kw1\">AS<\/span> SELECT <span class=\"sy0\">*<\/span> FROM DBA_OBJECTS<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTable created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> CREATE INDEX IDX_MY_OBJECTS ON MY_OBJECTS<span class=\"br0\">&#40;<\/span>OBJECT_TYPE<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nIndex created<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <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><span class=\"st_h\">'CURSO01'<\/span><span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'MY_OBJECTS'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR ALL INDEXED COLUMNS SIZE 254'<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos executar uma consulta utilizando &#8220;Bind variable&#8221;, em seguida vamos localizar o SQL_ID dessa consulta e listar o plano de execu\u00e7\u00e3o utilizando o pacote &#8220;DBMS_XPLAN&#8221;.<\/span><\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:460px;\"><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 \/><\/div><\/td><td><div class=\"php codecolorer\">curso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> variable B1 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> <span class=\"sy0\">:<\/span>B1 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'SYNONYM'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* TESTE001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">.<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">.<\/span><br \/>\n<span class=\"sy0\">\/<\/span>1cef5ab6_ProducerConsumerCons<br \/>\n<span class=\"sy0\">\/<\/span>d2092352_ProducerConsumer1<br \/>\n<span class=\"sy0\">\/<\/span>eb5dec48_ProducerConsumer2<br \/>\n<span class=\"sy0\">\/<\/span>1f032_ProducerConsumerProduce<br \/>\n<span class=\"sy0\">\/<\/span>a334bf37_ProducerConsumerCons<br \/>\n<span class=\"sy0\">\/<\/span>10dcd7b1_ProducerConsumerProd<br \/>\n<br \/>\n<span class=\"nu0\">33997<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT sql_id FROM gv<span class=\"re0\">$sql<\/span> WHERE sql_text LIKE <span class=\"st_h\">'%TESTE001%'<\/span> and sql_text NOT LIKE <span class=\"st_h\">'%gv$sql%'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nSQL_ID<br \/>\n<span class=\"sy0\">----------------<\/span><br \/>\n3usu2v5hz4q4c<br \/>\n<br \/>\n<span class=\"nu0\">1<\/span> row selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <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\">'3usu2v5hz4q4c'<\/span><span class=\"sy0\">,<\/span> <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'TYPICAL'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">---------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;3usu2v5hz4q4c<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nSELECT <span class=\"coMULTI\">\/* TESTE001 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<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\">880823944<\/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; <span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Rows &nbsp;<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> <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; &nbsp; <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; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">346<\/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><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;TABLE ACCESS FULL<span class=\"sy0\">|<\/span> MY_OBJECTS <span class=\"sy0\">|<\/span> <span class=\"nu0\">33981<\/span> <span class=\"sy0\">|<\/span> &nbsp;1128K<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">346<\/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\">05<\/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=\"st0\">&quot;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>B1<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">19<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos pegar a mesma consulta e utilizar o comando &#8220;EXPLAIN PLAN&#8221; para verificar se o plano de execu\u00e7\u00e3o gerado \u00e9 igual ao anterior.<\/span><\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;\"><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 \/><\/div><\/td><td><div class=\"php codecolorer\">curso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> EXPLAIN PLAN <span class=\"kw1\">FOR<\/span> SELECT OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nExplained<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM TABLE <span class=\"br0\">&#40;<\/span>DBMS_XPLAN<span class=\"sy0\">.<\/span>DISPLAY <span class=\"br0\">&#40;<\/span><span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span> <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span> <span class=\"st_h\">'TYPICAL'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------<\/span><br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">1142617335<\/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; &nbsp; <span class=\"sy0\">|<\/span> Rows &nbsp;<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> <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; &nbsp; <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;<span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1929<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">65586<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">85<\/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\">02<\/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> MY_OBJECTS &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1929<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">65586<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">85<\/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\">02<\/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> IDX_MY_OBJECTS <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1929<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">6<\/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><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;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>B1<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">14<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Comparando o dois planos podemos verificar que o primeiro gerado pelo pacote\u00a0&#8220;DBMS_XPLAN&#8221; fez acesso a tabela\u00a0MY_OBJECTS atrav\u00e9s de FULL TABLE SCAN enquanto o segundo gerado pelo comando\u00a0&#8220;EXPLAIN PLAN&#8221; acessou os registros da tabela utilizando ROWID fornecido pela opera\u00e7\u00e3o de INDEX RANGE SCAN.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos fazer mais um teste, agora utilizando o comando AUTOTRACE e verificar o plano que ser\u00e1 gerado.<\/span><\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:460px;\"><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\">curso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> variable B1 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> <span class=\"sy0\">:<\/span>B1 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'SYNONYM'<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nPL<span class=\"sy0\">\/<\/span>SQL procedure successfully completed<span class=\"sy0\">.<\/span><br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> set autotrace on<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"coMULTI\">\/* TESTE02 *\/<\/span> OBJECT_NAME FROM MY_OBJECTS WHERE OBJECT_TYPE <span class=\"sy0\">=<\/span> <span class=\"sy0\">:<\/span>B1<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nOBJECT_NAME<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------<\/span><br \/>\nDUAL<br \/>\nMAP_OBJECT<br \/>\n<span class=\"sy0\">.<\/span><br \/>\n<span class=\"sy0\">.<\/span><br \/>\n<span class=\"sy0\">.<\/span><br \/>\n<span class=\"sy0\">.<\/span><br \/>\nJOB_HISTORY<br \/>\nCOE_CONFIGURATION<br \/>\nXMLROOT<br \/>\nCOE_NAMESPACES<br \/>\nCOE_DOM_HELPER<br \/>\nCOE_UTILITIES<br \/>\nCOE_TOOLS<br \/>\nCHANNELS<br \/>\nCOUNTRIES<br \/>\nTIMES<br \/>\nCOSTS<br \/>\nCUSTOMERS<br \/>\nPRODUCTS<br \/>\nPROMOTIONS<br \/>\nSALES<br \/>\n<br \/>\n<span class=\"nu0\">33997<\/span> rows selected<span class=\"sy0\">.<\/span><br \/>\n<br \/>\n<br \/>\nExecution Plan<br \/>\n<span class=\"sy0\">----------------------------------------------------------<\/span><br \/>\nPlan <a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">hash<\/span><\/a> value<span class=\"sy0\">:<\/span> <span class=\"nu0\">1142617335<\/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; &nbsp; <span class=\"sy0\">|<\/span> Rows &nbsp;<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> <a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; &nbsp; <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;<span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1929<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">65586<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">85<\/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\">02<\/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> MY_OBJECTS &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1929<\/span> <span class=\"sy0\">|<\/span> <span class=\"nu0\">65586<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">85<\/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\">02<\/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> IDX_MY_OBJECTS <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">1929<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">6<\/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><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;OBJECT_TYPE&quot;<\/span><span class=\"sy0\">=:<\/span>B1<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\nStatistics<br \/>\n<span class=\"sy0\">----------------------------------------------------------<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">35<\/span> &nbsp;recursive calls<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> &nbsp;db block gets<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">3524<\/span> &nbsp;consistent gets<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1242<\/span> &nbsp;physical reads<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> &nbsp;redo size<br \/>\n&nbsp; &nbsp; <span class=\"nu0\">1112471<\/span> &nbsp;bytes sent via SQL<span class=\"sy0\">*<\/span>Net to client<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">25333<\/span> &nbsp;bytes received via SQL<span class=\"sy0\">*<\/span>Net from client<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;<span class=\"nu0\">2268<\/span> &nbsp;SQL<span class=\"sy0\">*<\/span>Net roundtrips to<span class=\"sy0\">\/<\/span>from client<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">8<\/span> &nbsp;sorts <span class=\"br0\">&#40;<\/span>memory<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span> &nbsp;sorts <span class=\"br0\">&#40;<\/span>disk<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"nu0\">33997<\/span> &nbsp;rows processed<br \/>\n<br \/>\ncurso01<span class=\"sy0\">@<\/span>LAB11 <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O resultado demonstra que o comando\u00a0AUTOTRACE, assim como o\u00a0comando\u00a0&#8220;EXPLAIN PLAN&#8221; acessaram a tabela da mesma forma,\u00a0atrav\u00e9s da opera\u00e7\u00e3o INDEX RANGE SCAN.<\/span><\/p>\n<h2><span style=\"font-size: 14pt;\">Conclus\u00e3o:<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Para evitar perda de tempo analisando um plano de execu\u00e7\u00e3o que n\u00e3o corresponde ao plano real que o otimizador cria e utiliza, passe a utilizar o pacote DBMS_XPLAN no seu trabalho de ajuste de desempenho das instru\u00e7\u00f5es SQL.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">Refer\u00eancia:<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\">http:\/\/kerryosborne.oracle-guy.com\/2008\/10\/explain-plan-lies\/<\/span><br \/>\n<span style=\"font-size: 12pt;\">https:\/\/iggyfernandez.wordpress.com\/2011\/12\/08\/the-twelve-days-of-sql-day-7\/<\/span><br \/>\n<span style=\"font-size: 12pt;\">http:\/\/tkyte.blogspot.com.br\/2007\/04\/when-explanation-doesn-sound-quite.html<\/span><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\/2017\/11\/promocao2u.jpg\" alt=\"Promo-D75L\" width=\"330\" height=\"242\" \/><\/a><\/p>\n<p><a href=\"https:\/\/youtu.be\/l6OphhTle9I\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1215\" src=\"http:\/\/dbtimewizard.com.br\/wp-content\/uploads\/2018\/01\/video-02-300x168.jpg\" alt=\"video-02\" width=\"330\" height=\"242\" \/><\/a><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Os comandos do Oracle &#8220;Explain Plan&#8221; e &#8220;AUTOTRACE&#8221; s\u00e3o muito utilizados para gerar\u00a0o plano de execu\u00e7\u00e3o que o otimizador vai escolher para uma determinada instru\u00e7\u00e3o SQL. Porem nem sempre o plano de execu\u00e7\u00e3o gerado por estes comandos correspondem ao plano que realmente ser\u00e1 executado pelo otimizador do banco de dados, a \u00fanica maneira de descobrir qual plano de execu\u00e7\u00e3o ser\u00e1<\/p>\n","protected":false},"author":2,"featured_media":538,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[5,6,7,8,13,10,11,12],"class_list":["post-15","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cost-base-optimizer","tag-autotrace","tag-cbo","tag-dbms_xplan","tag-explain-plan","tag-melhorar-desempenho","tag-otimizador","tag-plano-de-execucao","tag-tuning"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.9 - aioseo.com -->\n\t<meta name=\"description\" content=\"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.\" \/>\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\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/\" \/>\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=\"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard\" \/>\n\t\t<meta property=\"og:description\" content=\"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.\" \/>\n\t\t<meta property=\"og:url\" content=\"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2015-10-31T23:14:51+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-11-11T22:05:42+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.\" \/>\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\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#article\",\"name\":\"Por que utilizar \\u201cExplain Plan\\u201d ou \\u201cAUTOTRACE\\u201d no processo de \\u201cTuning\\u201d pode ser uma m\\u00e1 id\\u00e9ia? | DBTimeWizard\",\"headline\":\"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\\u00e1 id\\u00e9ia?\",\"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\\\/2015\\\/10\\\/mark-516277_1920.jpg\",\"width\":1920,\"height\":1355,\"caption\":\"Explain Plan or Autotrace\"},\"datePublished\":\"2015-10-31T21:14:51-02:00\",\"dateModified\":\"2019-11-11T19:05:42-03:00\",\"inLanguage\":\"pt-BR\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#webpage\"},\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#webpage\"},\"articleSection\":\"Cost Base Optimizer, Autotrace, CBO, DBMS_XPLAN, Explain Plan, Melhorar desempenho, Otimizador, Plano de execu\\u00e7\\u00e3o, Tuning\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#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\\\/cost-base-optimizer\\\/#listItem\",\"name\":\"Cost Base Optimizer\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/cost-base-optimizer\\\/#listItem\",\"position\":2,\"name\":\"Cost Base Optimizer\",\"item\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/cost-base-optimizer\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#listItem\",\"name\":\"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\\u00e1 id\\u00e9ia?\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog#listItem\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#listItem\",\"position\":3,\"name\":\"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\\u00e1 id\\u00e9ia?\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/category\\\/cost-base-optimizer\\\/#listItem\",\"name\":\"Cost Base Optimizer\"}}]},{\"@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\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#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\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#webpage\",\"url\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/\",\"name\":\"Por que utilizar \\u201cExplain Plan\\u201d ou \\u201cAUTOTRACE\\u201d no processo de \\u201cTuning\\u201d pode ser uma m\\u00e1 id\\u00e9ia? | DBTimeWizard\",\"description\":\"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\\u00e7\\u00e3o que realmente ser\\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.\",\"inLanguage\":\"pt-BR\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#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\\\/2015\\\/10\\\/mark-516277_1920.jpg\",\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#mainImage\",\"width\":1920,\"height\":1355,\"caption\":\"Explain Plan or Autotrace\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/dbtimewizard.com.br\\\/blog\\\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\\\/#mainImage\"},\"datePublished\":\"2015-10-31T21:14:51-02:00\",\"dateModified\":\"2019-11-11T19:05:42-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":"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard","description":"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.","canonical_url":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#article","name":"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard","headline":"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\u00e1 id\u00e9ia?","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\/2015\/10\/mark-516277_1920.jpg","width":1920,"height":1355,"caption":"Explain Plan or Autotrace"},"datePublished":"2015-10-31T21:14:51-02:00","dateModified":"2019-11-11T19:05:42-03:00","inLanguage":"pt-BR","mainEntityOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#webpage"},"isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#webpage"},"articleSection":"Cost Base Optimizer, Autotrace, CBO, DBMS_XPLAN, Explain Plan, Melhorar desempenho, Otimizador, Plano de execu\u00e7\u00e3o, Tuning"},{"@type":"BreadcrumbList","@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#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\/cost-base-optimizer\/#listItem","name":"Cost Base Optimizer"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/cost-base-optimizer\/#listItem","position":2,"name":"Cost Base Optimizer","item":"http:\/\/dbtimewizard.com.br\/blog\/category\/cost-base-optimizer\/","nextItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#listItem","name":"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\u00e1 id\u00e9ia?"},"previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog#listItem","name":"In\u00edcio"}},{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#listItem","position":3,"name":"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\u00e1 id\u00e9ia?","previousItem":{"@type":"ListItem","@id":"http:\/\/dbtimewizard.com.br\/blog\/category\/cost-base-optimizer\/#listItem","name":"Cost Base Optimizer"}}]},{"@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\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#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\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#webpage","url":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/","name":"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard","description":"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.","inLanguage":"pt-BR","isPartOf":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/#website"},"breadcrumb":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#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\/2015\/10\/mark-516277_1920.jpg","@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#mainImage","width":1920,"height":1355,"caption":"Explain Plan or Autotrace"},"primaryImageOfPage":{"@id":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/#mainImage"},"datePublished":"2015-10-31T21:14:51-02:00","dateModified":"2019-11-11T19:05:42-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":"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard","og:description":"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.","og:url":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/","article:published_time":"2015-10-31T23:14:51+00:00","article:modified_time":"2019-11-11T22:05:42+00:00","twitter:card":"summary","twitter:title":"Por que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia? | DBTimeWizard","twitter:description":"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning."},"aioseo_meta_data":{"post_id":"15","title":null,"description":"Os comandos EXPLAIN PLAN e AUTOTRACE nem sempre geram o plano de execu\u00e7\u00e3o que realmente ser\u00e1 executado pelo banco dificultando a analise de um trabalho tuning.","keywords":[{"label":"autotrace","value":"autotrace"},{"label":"CBO","value":"CBO"},{"label":"DBMS_XPLAN","value":"DBMS_XPLAN"},{"label":"Explain Plan","value":"Explain Plan"},{"label":"Melhorar desempenho","value":"Melhorar desempenho"},{"label":"Otimizador","value":"Otimizador"},{"label":"Plano de execu\u00e7\u00e3o","value":"Plano de execu\u00e7\u00e3o"},{"label":"Tuning","value":"Tuning"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-12-05 15:15:18","updated":"2026-03-19 14:17:06","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\/cost-base-optimizer\/\" title=\"Cost Base Optimizer\">Cost Base Optimizer<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPor que utilizar \u201cExplain Plan\u201d ou \u201cAUTOTRACE\u201d no processo de \u201cTuning\u201d pode ser uma m\u00e1 id\u00e9ia?\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"In\u00edcio","link":"http:\/\/dbtimewizard.com.br\/blog"},{"label":"Cost Base Optimizer","link":"http:\/\/dbtimewizard.com.br\/blog\/category\/cost-base-optimizer\/"},{"label":"Por que utilizar &#8220;Explain Plan&#8221; ou &#8220;AUTOTRACE&#8221; no processo de &#8220;Tuning&#8221; pode ser uma m\u00e1 id\u00e9ia?","link":"http:\/\/dbtimewizard.com.br\/blog\/por-que-utilizar-explain-plan-ou-autotrace-no-processo-de-tuning-pode-ser-uma-ma-ideia-2\/"}],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/15","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=15"}],"version-history":[{"count":15,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/15\/revisions"}],"predecessor-version":[{"id":2110,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/15\/revisions\/2110"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/538"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=15"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=15"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}