{"id":2112,"date":"2019-11-17T19:56:55","date_gmt":"2019-11-17T22:56:55","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=2112"},"modified":"2019-11-17T19:56:55","modified_gmt":"2019-11-17T22:56:55","slug":"quer-mais-performance-faca-upgrade-para-o-19c","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/quer-mais-performance-faca-upgrade-para-o-19c\/","title":{"rendered":"Quer mais performance? Fa\u00e7a upgrade para o 19c"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O Otimizador do Oracle vem sendo aprimorado a cada nova vers\u00e3o, a partir da 12c foram introduzidas muitas melhorias que tornaram o Otimizador muito mais eficente na escolha dos planos de execu\u00e7\u00e3o, nas vers\u00f5es anteriores o Otimizador tinha algumas limita\u00e7\u00f5es que o impedia de escolher planos de execu\u00e7\u00e3o melhores. Na vers\u00e3o 19c o Otimizador n\u00e3o alcan\u00e7ou a perfei\u00e7\u00e3o, mas houve um avan\u00e7o gigantesco comparado com as vers\u00f5es 11g e anteriores. <\/span><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n<span style=\"font-size: 12pt;\">Neste artigo vamos fazer uma demonstra\u00e7\u00e3o pr\u00e1tica de uma dessas melhorias, mostrando uma limita\u00e7\u00e3o do Otimizador existente na vers\u00e3o 11g e como ele superou esta limita\u00e7\u00e3o produzindo planos de execu\u00e7\u00e3o com melhor desempenho na vers\u00e3o 18c.<\/span><\/p>\n<p>&nbsp;<br \/>\n&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Na primeira simula\u00e7\u00e3o pr\u00e1tica vamos verificar a inefici\u00eancia do Otimizador na escolha do plano de execu\u00e7\u00e3o na vers\u00e3o 11gR2:<\/span><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\">1.1) Criar os objetos para simular a consulta <\/span><\/strong><br \/>\n<strong><span style=\"font-size: 12pt;\">1.2) Executar a consulta com plano de execu\u00e7\u00e3o ineficiente<\/span><\/strong><br \/>\n<strong><span style=\"font-size: 12pt;\">1.3) Executar a mesma consulta com HINTs para melhorar o seu desempenho<\/span><\/strong><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Na segunda simula\u00e7\u00e3o pr\u00e1tica vamos verificar como o Otimizador resolve esta limita\u00e7\u00e3o da vers\u00e3o 11gR2 produzindo um plano de execu\u00e7\u00e3o com melhor desempenho na vers\u00e3o 18c:<\/span><\/p>\n<p style=\"text-align: justify;\"><strong><span style=\"font-size: 12pt;\">2.1) Criar os objetos para simular a consulta <\/span><\/strong><br \/>\n<strong><span style=\"font-size: 12pt;\">2.2) Executar a consulta com plano de execu\u00e7\u00e3o eficiente<\/span><\/strong><\/p>\n<h1 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">PRIMEIRA SIMULA\u00c7\u00c3O (11gR2)<\/span><\/h1>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1.1) Criar os objetos para simular a consulta<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Vamos criar os objetos necess\u00e1rios para realizar a nossa simula\u00e7\u00e3o.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>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 \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT <span class=\"sy0\">*<\/span> FROM V<span class=\"re0\">$VERSION<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nBANNER<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------<\/span><br \/>\nOracle Database 11g Enterprise Edition Release 11<span class=\"sy0\">.<\/span>2<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>4<span class=\"sy0\">.<\/span>0 <span class=\"sy0\">-<\/span> 64bit Production<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create table dbtw_grupo <span class=\"br0\">&#40;<\/span>key_id number<span class=\"sy0\">,<\/span> id_grupo number<span class=\"sy0\">,<\/span> nome_grupo varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"kw2\">Declare<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; num_lo01 &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; num_lo02 &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; num_ocor &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">167<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; row_count INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp;begin<br \/>\n&nbsp; <span class=\"nu0\">9<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; <span class=\"kw1\">FOR<\/span> c1 in <span class=\"br0\">&#40;<\/span>select trunc<span class=\"br0\">&#40;<\/span>dbms_random<span class=\"sy0\">.<\/span>value<span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> num_dist from dual connect by level <span class=\"sy0\">&lt;=<\/span> <span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; LOOP<br \/>\n&nbsp;<span class=\"nu0\">12<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">FOR<\/span> num_lo02 in <span class=\"nu0\">0<\/span> <span class=\"sy0\">..<\/span> num_ocor<br \/>\n&nbsp;<span class=\"nu0\">13<\/span> &nbsp; &nbsp; &nbsp; &nbsp;LOOP<br \/>\n&nbsp;<span class=\"nu0\">14<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;INSERT INTO dbtw_grupo values<span class=\"br0\">&#40;<\/span>row_count<span class=\"sy0\">,<\/span>c1<span class=\"sy0\">.<\/span>num_dist<span class=\"sy0\">,<\/span><span class=\"st_h\">'GRUPO_NUMERO-'<\/span><span class=\"sy0\">||<\/span>c1<span class=\"sy0\">.<\/span>num_dist<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">15<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;row_count <span class=\"sy0\">:=<\/span> row_count <span class=\"sy0\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">16<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">17<\/span> &nbsp; &nbsp; &nbsp; &nbsp;num_ocor <span class=\"sy0\">:=<\/span> num_ocor <span class=\"sy0\">-<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">18<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">if<\/span> num_ocor <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span> then<br \/>\n&nbsp;<span class=\"nu0\">19<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; num_ocor <span class=\"sy0\">:=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">20<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a> <span class=\"kw1\">if<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">21<\/span> &nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">22<\/span> &nbsp; &nbsp; commit<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">23<\/span><br \/>\n&nbsp;<span class=\"nu0\">24<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">25<\/span> &nbsp;<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> create index dbtw_id_grupo_idx on dbtw_grupo<span class=\"br0\">&#40;<\/span>id_grupo<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n\u00cdndice criado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_GRUPO'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_GRUPO'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR COLUMNS ID_GRUPO SIZE 254'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> create table dbtw_usuario <span class=\"br0\">&#40;<\/span>login varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> id_grupo number<span class=\"sy0\">,<\/span> status varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> codigo number<span class=\"sy0\">,<\/span> note varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">256<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"kw2\">Declare<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; num_lo01 &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; num_ocor &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">167<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; l_id_grupo INTEGER<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; log_id INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; l_key_id INTEGER<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp;begin<br \/>\n&nbsp;<span class=\"nu0\">10<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; <span class=\"kw1\">FOR<\/span> num_lo01 in <span class=\"nu0\">1<\/span> <span class=\"sy0\">..<\/span> <span class=\"nu0\">350000<\/span><br \/>\n&nbsp;<span class=\"nu0\">12<\/span> &nbsp; &nbsp; LOOP<br \/>\n&nbsp;<span class=\"nu0\">13<\/span> &nbsp; &nbsp; &nbsp; l_key_id <span class=\"sy0\">:=<\/span> trunc<span class=\"br0\">&#40;<\/span>dbms_random<span class=\"sy0\">.<\/span>value<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">14999<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">14<\/span> &nbsp; &nbsp; &nbsp; select id_grupo into l_id_grupo from DBTW_GRUPO where key_id <span class=\"sy0\">=<\/span> l_key_id<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">15<\/span> &nbsp; &nbsp; &nbsp; INSERT INTO dbtw_usuario values<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'LOG_'<\/span><span class=\"sy0\">||<\/span>LPAD<span class=\"br0\">&#40;<\/span>log_id<span class=\"sy0\">,<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>l_id_grupo<span class=\"sy0\">,<\/span><span class=\"st_h\">'I'<\/span><span class=\"sy0\">,<\/span>LPAD<span class=\"br0\">&#40;<\/span>log_id<span class=\"sy0\">,<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>LPAD<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'X'<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">256<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'X'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">16<\/span> &nbsp; &nbsp; &nbsp; log_id <span class=\"sy0\">:=<\/span> log_id <span class=\"sy0\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">17<\/span> &nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">18<\/span> &nbsp; &nbsp; commit<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">19<\/span><br \/>\n&nbsp;<span class=\"nu0\">20<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">21<\/span> &nbsp;<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> create index dbtw_usuario_id_grupo_idx on dbtw_usuario<span class=\"br0\">&#40;<\/span>id_grupo<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> create index dbtw_usuario_status_idx on dbtw_usuario<span class=\"br0\">&#40;<\/span>status<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> create index dbtw_usuario_login_idx on dbtw_usuario<span class=\"br0\">&#40;<\/span>login<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> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'N'<\/span> where codigo between &nbsp;<span class=\"nu0\">60000<\/span> and <span class=\"nu0\">120000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">60001<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'F'<\/span> where codigo between <span class=\"nu0\">150000<\/span> and <span class=\"nu0\">153000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">3001<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'A'<\/span> where codigo between <span class=\"nu0\">210000<\/span> and <span class=\"nu0\">212000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">2001<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'R'<\/span> where codigo between <span class=\"nu0\">280000<\/span> and <span class=\"nu0\">280500<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">501<\/span> linhas atualizadas<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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_USUARIO'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_USUARIO'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR COLUMNS ID_GRUPO SIZE 254'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_USUARIO'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR COLUMNS STATUS SIZE 254'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1.2) Executar a consulta com plano de execu\u00e7\u00e3o ineficiente<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>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 \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<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> variable LOGIN &nbsp; VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable SYS_B_3 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable SYS_B_4 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/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> &nbsp;<span class=\"sy0\">:<\/span>SYS_B_3 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'I'<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> &nbsp;<span class=\"sy0\">:<\/span>SYS_B_4 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'R'<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> &nbsp;<span class=\"sy0\">:<\/span>LOGIN <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'076955'<\/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 <span class=\"coMULTI\">\/* dbtw-062.1 *\/<\/span> u<span class=\"sy0\">.<\/span>codigo<span class=\"sy0\">,<\/span> u<span class=\"sy0\">.<\/span>login<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM dbtw_usuario u<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;INNER <a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> dbtw_grupo g<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; ON u<span class=\"sy0\">.<\/span>id_grupo <span class=\"sy0\">=<\/span> g<span class=\"sy0\">.<\/span>id_grupo<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;WHERE u<span class=\"sy0\">.<\/span>status NOT IN <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_3&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_4&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp;AND u<span class=\"sy0\">.<\/span>login like <span class=\"st_h\">'%'<\/span><span class=\"sy0\">||:<\/span>LOGIN<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; CODIGO LOGIN<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp; <span class=\"sy0\">..<\/span> &nbsp; <span class=\"sy0\">..<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n<br \/>\n<span class=\"nu0\">157<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><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 FROM v<span class=\"re0\">$sql<\/span> WHERE sql_text LIKE <span class=\"st_h\">'%dbtw-062.1%'<\/span> 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 \/>\ndrc438b9c12ty &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> 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\">'BASIC ALLSTATS 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\">'BASIC ALLSTATS 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\">'drc438b9c12ty'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'BASIC ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nEXPLAINED SQL STATEMENT<span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">------------------------<\/span><br \/>\nselect <span class=\"coMULTI\">\/* dbtw-062.1 *\/<\/span> u<span class=\"sy0\">.<\/span>codigo<span class=\"sy0\">,<\/span> u<span class=\"sy0\">.<\/span>login &nbsp;FROM dbtw_usuario u INNER<br \/>\n<a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> dbtw_grupo g &nbsp; &nbsp;ON u<span class=\"sy0\">.<\/span>id_grupo <span class=\"sy0\">=<\/span> g<span class=\"sy0\">.<\/span>id_grupo WHERE u<span class=\"sy0\">.<\/span>status NOT IN<br \/>\n<span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_3&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_4&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp; AND u<span class=\"sy0\">.<\/span>login like <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;B0&quot;<\/span><span class=\"sy0\">||:<\/span>LOGIN<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\">2044621122<\/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; <span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span> Reads &nbsp;<span class=\"sy0\">|<\/span> &nbsp;OMem <span class=\"sy0\">|<\/span> &nbsp;1Mem <span class=\"sy0\">|<\/span> Used<span class=\"sy0\">-<\/span>Mem <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">157<\/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\">02.70<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">14230<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">14211<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/hash\"><span class=\"kw3\">HASH<\/span><\/a> <a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;345K<span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">157<\/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\">02.70<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">14230<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">14211<\/span> <span class=\"sy0\">|<\/span> &nbsp;1321K<span class=\"sy0\">|<\/span> &nbsp;1321K<span class=\"sy0\">|<\/span> &nbsp;721K <span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS FULL &nbsp; <span class=\"sy0\">|<\/span> DBTW_USUARIO &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">3242<\/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\">02.66<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">14181<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">14177<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; INDEX FAST FULL SCAN<span class=\"sy0\">|<\/span> DBTW_ID_GRUPO_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">15861<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">15861<\/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.04<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">49<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">34<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<br \/>\nPredicate Information <span class=\"br0\">&#40;<\/span>identified by operation id<span class=\"br0\">&#41;<\/span><span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">---------------------------------------------------<\/span><br \/>\n<br \/>\n&nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;G&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&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;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;STATUS&quot;<\/span><span class=\"sy0\">&lt;&gt;:<\/span>SYS_B_3 AND <span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;LOGIN&quot;<\/span> LIKE <span class=\"sy0\">:<\/span>B0<span class=\"sy0\">||:<\/span>LOGIN AND <span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;STATUS&quot;<\/span><span class=\"sy0\">&lt;&gt;:<\/span>SYS_B_4<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">23<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Observe no plano de execu\u00e7\u00e3o acima que o Otimizador utilizou a opera\u00e7\u00e3o HASH JOIN para juntar as duas tabelas quando a melhor op\u00e7\u00e3o seria uma opera\u00e7\u00e3o NESTED LOOPS, uma vez que foi selecionada somente 1 linha na tabela DBTW_USUARIO (A-Rows = 1). O Otimizador escolheu a opera\u00e7\u00e3o HASH JOIN pois a estimativa de linhas que seriam lidas da tabela DBTW_USUARIO seriam 3242 linhas (E-Rows = 3242), este erro de estimativa foi causado pela complexidade dos filtros da cl\u00e1usula WHERE.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1.3) Executar a mesma consulta com HINTs para melhorar o seu desempenho<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Com o conhecimento mais aprofundado dos dados da tabela DBTW_USUARIO sabemos que apesar da complexidade do filtro da cl\u00e1usula WHERE, o numero de linhas selecionadas ser\u00e1 sempre pr\u00f3ximo de 1, logo podemos dizer para o Otimizador, atrav\u00e9s de HINTs, que estime 1 linha para cardinalidade da opera\u00e7\u00e3o de leitura da tabela DBTW_USUARIO e utilize o indice DBTW_USUARIO_LOGIN_IDX.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>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 \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<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> variable LOGIN &nbsp; VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable SYS_B_3 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable SYS_B_4 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/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> &nbsp;<span class=\"sy0\">:<\/span>SYS_B_3 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'I'<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> &nbsp;<span class=\"sy0\">:<\/span>SYS_B_4 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'R'<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> &nbsp;<span class=\"sy0\">:<\/span>LOGIN <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'076955'<\/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 <span class=\"coMULTI\">\/*+ &nbsp;OPT_ESTIMATE(TABLE U ROWS=1) INDEX(U DBTW_USUARIO_LOGIN_IDX) *\/<\/span> <span class=\"coMULTI\">\/* dbtw-062.1 *\/<\/span> u<span class=\"sy0\">.<\/span>codigo<span class=\"sy0\">,<\/span> u<span class=\"sy0\">.<\/span>login<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM dbtw_usuario u<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;INNER <a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> dbtw_grupo g<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; ON u<span class=\"sy0\">.<\/span>id_grupo <span class=\"sy0\">=<\/span> g<span class=\"sy0\">.<\/span>id_grupo<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;WHERE u<span class=\"sy0\">.<\/span>status NOT IN <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_3&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_4&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp;AND u<span class=\"sy0\">.<\/span>login like <span class=\"st_h\">'%'<\/span><span class=\"sy0\">||:<\/span>LOGIN<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; CODIGO LOGIN<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">..<\/span> &nbsp; &nbsp;<span class=\"sy0\">..<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n<br \/>\n<span class=\"nu0\">157<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><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 FROM v<span class=\"re0\">$sql<\/span> WHERE sql_text LIKE <span class=\"st_h\">'%dbtw-062.1%'<\/span> 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 \/>\na2dkyxr0qdc08 &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> 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\">'BASIC ALLSTATS 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\">'BASIC ALLSTATS 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\">'a2dkyxr0qdc08'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'BASIC ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nEXPLAINED SQL STATEMENT<span class=\"sy0\">:<\/span><br \/>\n<span class=\"sy0\">------------------------<\/span><br \/>\nselect <span class=\"coMULTI\">\/*+ &nbsp;OPT_ESTIMATE(TABLE U ROWS=1) INDEX(U<br \/>\nDBTW_USUARIO_LOGIN_IDX) *\/<\/span> <span class=\"coMULTI\">\/* dbtw-062.1 *\/<\/span> u<span class=\"sy0\">.<\/span>codigo<span class=\"sy0\">,<\/span> u<span class=\"sy0\">.<\/span>login &nbsp;FROM<br \/>\ndbtw_usuario u INNER <a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> dbtw_grupo g &nbsp; &nbsp;ON u<span class=\"sy0\">.<\/span>id_grupo <span class=\"sy0\">=<\/span> g<span class=\"sy0\">.<\/span>id_grupo<br \/>\nWHERE u<span class=\"sy0\">.<\/span>status NOT IN <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_3&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_4&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp; AND u<span class=\"sy0\">.<\/span>login like<br \/>\n<span class=\"sy0\">:<\/span><span class=\"st0\">&quot;B0&quot;<\/span><span class=\"sy0\">||:<\/span>LOGIN<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\">3055727543<\/span><br \/>\n<br \/>\n<span class=\"sy0\">--------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span> Reads &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; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">157<\/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.62<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1091<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">19<\/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; &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\">107<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">157<\/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.62<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1091<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">19<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; TABLE ACCESS BY INDEX ROWID<span class=\"sy0\">|<\/span> DBTW_USUARIO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/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.62<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1078<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">19<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> DBTW_USUARIO_LOGIN_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">17500<\/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.61<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1077<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">18<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|*<\/span> &nbsp;<span class=\"nu0\">4<\/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> DBTW_ID_GRUPO_IDX &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">107<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">157<\/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\">13<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/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> filter<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;STATUS&quot;<\/span><span class=\"sy0\">&lt;&gt;:<\/span>SYS_B_3 AND <span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;STATUS&quot;<\/span><span class=\"sy0\">&lt;&gt;:<\/span>SYS_B_4<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;LOGIN&quot;<\/span> LIKE <span class=\"sy0\">:<\/span>B0<span class=\"sy0\">||:<\/span>LOGIN<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;LOGIN&quot;<\/span> LIKE <span class=\"sy0\">:<\/span>B0<span class=\"sy0\">||:<\/span>LOGIN<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;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;G&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">28<\/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;\">Ap\u00f3s a execu\u00e7\u00e3o da consulta podemos verificar no plano de execu\u00e7\u00e3o acima que o desempenho melhorou significativamente, enquanto na primeira execu\u00e7\u00e3o foram acessados 14.230 Buffers, nesta execu\u00e7\u00e3o a quantidade Buffers acessados caiu para 1.091.<\/span><\/p>\n<h1 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">SEGUNDA SIMULA\u00c7\u00c3O (18C)<\/span><\/h1>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos utilizar esta mesma consulta numa base 18c e verificar como o Otimizador lida com esta quest\u00e3o de predicados ou filtros da cl\u00e1usula WHERE complexos.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2.1) Criar os objetos para simular a consulta<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>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 \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<br \/>96<br \/>97<br \/>98<br \/>99<br \/>100<br \/>101<br \/>102<br \/>103<br \/>104<br \/>105<br \/>106<br \/>107<br \/>108<br \/>109<br \/>110<br \/>111<br \/>112<br \/>113<br \/>114<br \/>115<br \/>116<br \/>117<br \/>118<br \/>119<br \/>120<br \/>121<br \/>122<br \/>123<br \/>124<br \/>125<br \/>126<br \/>127<br \/>128<br \/>129<br \/>130<br \/>131<br \/>132<br \/>133<br \/>134<br \/>135<br \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> SELECT BANNER_FULL FROM V<span class=\"re0\">$VERSION<\/span> where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">2<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nBANNER_FULL<br \/>\n<span class=\"sy0\">----------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nOracle Database 18c Express Edition Release 18<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0 <span class=\"sy0\">-<\/span> Production<br \/>\nVersion 18<span class=\"sy0\">.<\/span>4<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<span class=\"sy0\">.<\/span>0<br \/>\n<br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> create table dbtw_grupo <span class=\"br0\">&#40;<\/span>key_id number<span class=\"sy0\">,<\/span> id_grupo number<span class=\"sy0\">,<\/span> nome_grupo varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"kw2\">Declare<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; num_lo01 &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; num_lo02 &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; num_ocor &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">167<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; row_count INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp;begin<br \/>\n&nbsp; <span class=\"nu0\">9<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; <span class=\"kw1\">FOR<\/span> c1 in <span class=\"br0\">&#40;<\/span>select trunc<span class=\"br0\">&#40;<\/span>dbms_random<span class=\"sy0\">.<\/span>value<span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span> num_dist from dual connect by level <span class=\"sy0\">&lt;=<\/span> <span class=\"nu0\">1000<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; LOOP<br \/>\n&nbsp;<span class=\"nu0\">12<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">FOR<\/span> num_lo02 in <span class=\"nu0\">0<\/span> <span class=\"sy0\">..<\/span> num_ocor<br \/>\n&nbsp;<span class=\"nu0\">13<\/span> &nbsp; &nbsp; &nbsp; &nbsp;LOOP<br \/>\n&nbsp;<span class=\"nu0\">14<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;INSERT INTO dbtw_grupo values<span class=\"br0\">&#40;<\/span>row_count<span class=\"sy0\">,<\/span>c1<span class=\"sy0\">.<\/span>num_dist<span class=\"sy0\">,<\/span><span class=\"st_h\">'GRUPO_NUMERO-'<\/span><span class=\"sy0\">||<\/span>c1<span class=\"sy0\">.<\/span>num_dist<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">15<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;row_count <span class=\"sy0\">:=<\/span> row_count <span class=\"sy0\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">16<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">17<\/span> &nbsp; &nbsp; &nbsp; &nbsp;num_ocor <span class=\"sy0\">:=<\/span> num_ocor <span class=\"sy0\">-<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">18<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"kw1\">if<\/span> num_ocor <span class=\"sy0\">=<\/span> <span class=\"nu0\">0<\/span> then<br \/>\n&nbsp;<span class=\"nu0\">19<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; num_ocor <span class=\"sy0\">:=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">20<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a> <span class=\"kw1\">if<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">21<\/span> &nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">22<\/span> &nbsp; &nbsp; commit<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">23<\/span><br \/>\n&nbsp;<span class=\"nu0\">24<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">25<\/span> &nbsp;<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> create index dbtw_id_grupo_idx on dbtw_grupo<span class=\"br0\">&#40;<\/span>id_grupo<span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n\u00cdndice criado<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_GRUPO'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_GRUPO'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR COLUMNS ID_GRUPO SIZE 254'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> create table dbtw_usuario <span class=\"br0\">&#40;<\/span>login varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> id_grupo number<span class=\"sy0\">,<\/span> status varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span> codigo number<span class=\"sy0\">,<\/span> note varchar<span class=\"br0\">&#40;<\/span><span class=\"nu0\">256<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela criada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <span class=\"kw2\">Declare<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; num_lo01 &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; num_ocor &nbsp;INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">167<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; l_id_grupo INTEGER<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; log_id INTEGER <span class=\"sy0\">:=<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; l_key_id INTEGER<span class=\"sy0\">;<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp;begin<br \/>\n&nbsp;<span class=\"nu0\">10<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; <span class=\"kw1\">FOR<\/span> num_lo01 in <span class=\"nu0\">1<\/span> <span class=\"sy0\">..<\/span> <span class=\"nu0\">350000<\/span><br \/>\n&nbsp;<span class=\"nu0\">12<\/span> &nbsp; &nbsp; LOOP<br \/>\n&nbsp;<span class=\"nu0\">13<\/span> &nbsp; &nbsp; &nbsp; l_key_id <span class=\"sy0\">:=<\/span> trunc<span class=\"br0\">&#40;<\/span>dbms_random<span class=\"sy0\">.<\/span>value<span class=\"br0\">&#40;<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">14999<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">14<\/span> &nbsp; &nbsp; &nbsp; select id_grupo into l_id_grupo from DBTW_GRUPO where key_id <span class=\"sy0\">=<\/span> l_key_id<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">15<\/span> &nbsp; &nbsp; &nbsp; INSERT INTO dbtw_usuario values<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'LOG_'<\/span><span class=\"sy0\">||<\/span>LPAD<span class=\"br0\">&#40;<\/span>log_id<span class=\"sy0\">,<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>l_id_grupo<span class=\"sy0\">,<\/span><span class=\"st_h\">'I'<\/span><span class=\"sy0\">,<\/span>LPAD<span class=\"br0\">&#40;<\/span>log_id<span class=\"sy0\">,<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span>LPAD<span class=\"br0\">&#40;<\/span><span class=\"st_h\">'X'<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">256<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'X'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">16<\/span> &nbsp; &nbsp; &nbsp; log_id <span class=\"sy0\">:=<\/span> log_id <span class=\"sy0\">+<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">17<\/span> &nbsp; &nbsp; <a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">END<\/span><\/a> LOOP<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">18<\/span> &nbsp; &nbsp; commit<span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">19<\/span><br \/>\n&nbsp;<span class=\"nu0\">20<\/span> &nbsp;<a href=\"http:\/\/www.php.net\/end\"><span class=\"kw3\">end<\/span><\/a><span class=\"sy0\">;<\/span><br \/>\n&nbsp;<span class=\"nu0\">21<\/span> &nbsp;<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> create index dbtw_usuario_id_grupo_idx on dbtw_usuario<span class=\"br0\">&#40;<\/span>id_grupo<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> create index dbtw_usuario_status_idx on dbtw_usuario<span class=\"br0\">&#40;<\/span>status<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> create index dbtw_usuario_login_idx on dbtw_usuario<span class=\"br0\">&#40;<\/span>login<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> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'N'<\/span> where codigo between &nbsp;<span class=\"nu0\">60000<\/span> and <span class=\"nu0\">120000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">60001<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'F'<\/span> where codigo between <span class=\"nu0\">150000<\/span> and <span class=\"nu0\">153000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">3001<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'A'<\/span> where codigo between <span class=\"nu0\">210000<\/span> and <span class=\"nu0\">212000<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">2001<\/span> linhas atualizadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span> update dbtw_usuario set status <span class=\"sy0\">=<\/span> <span class=\"st_h\">'R'<\/span> where codigo between <span class=\"nu0\">280000<\/span> and <span class=\"nu0\">280500<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">501<\/span> linhas atualizadas<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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_USUARIO'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_USUARIO'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR COLUMNS ID_GRUPO SIZE 254'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname <span class=\"sy0\">=&gt;<\/span> USER<span class=\"sy0\">,<\/span>tabname <span class=\"sy0\">=&gt;<\/span> <span class=\"st_h\">'DBTW_USUARIO'<\/span><span class=\"sy0\">,<\/span>method_opt<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'FOR COLUMNS STATUS SIZE 254'<\/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=\"sy0\">,<\/span>degree<span class=\"sy0\">=&gt;<\/span><span class=\"nu0\">16<\/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<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2.2) Executar a consulta com plano de execu\u00e7\u00e3o eficiente<\/span><\/h2>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:100%;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>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 \/>75<br \/>76<br \/>77<br \/>78<br \/>79<br \/>80<br \/>81<br \/>82<br \/>83<br \/>84<br \/>85<br \/>86<br \/>87<br \/>88<br \/>89<br \/>90<br \/>91<br \/>92<br \/>93<br \/>94<br \/>95<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> variable LOGIN &nbsp; VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable SYS_B_3 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> variable SYS_B_4 VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">32<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/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> &nbsp;<span class=\"sy0\">:<\/span>SYS_B_3 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'I'<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> &nbsp;<span class=\"sy0\">:<\/span>SYS_B_4 <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'R'<\/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> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> &nbsp;<span class=\"sy0\">:<\/span>LOGIN <span class=\"sy0\">:=<\/span> <span class=\"st_h\">'076955'<\/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 <span class=\"coMULTI\">\/* dbtw-062.3 *\/<\/span> u<span class=\"sy0\">.<\/span>codigo<span class=\"sy0\">,<\/span> u<span class=\"sy0\">.<\/span>login<br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; FROM dbtw_usuario u<br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp;INNER <a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> dbtw_grupo g<br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; ON u<span class=\"sy0\">.<\/span>id_grupo <span class=\"sy0\">=<\/span> g<span class=\"sy0\">.<\/span>id_grupo<br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp;WHERE u<span class=\"sy0\">.<\/span>status NOT IN <span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_3&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_4&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp;AND u<span class=\"sy0\">.<\/span>login like <span class=\"st_h\">'%'<\/span><span class=\"sy0\">||:<\/span>LOGIN<span class=\"sy0\">;<\/span><br \/>\n<br \/>\n&nbsp; &nbsp; CODIGO LOGIN<br \/>\n<span class=\"sy0\">----------<\/span> <span class=\"sy0\">----------<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"sy0\">..<\/span> &nbsp; &nbsp;<span class=\"sy0\">..<\/span><br \/>\n&nbsp; &nbsp; &nbsp;<span class=\"nu0\">76955<\/span> LOG_076955<br \/>\n<br \/>\n<span class=\"nu0\">72<\/span> linhas selecionadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> column sql_id new_value m_sql_id<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><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 FROM v<span class=\"re0\">$sql<\/span> WHERE sql_text LIKE <span class=\"st_h\">'%dbtw-062.3%'<\/span> 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 \/>\n6v7qnmxnyf0ru &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> 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\">'ADAPTIVE ALLSTATS 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\">'ADAPTIVE ALLSTATS 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\">'6v7qnmxnyf0ru'<\/span><span class=\"sy0\">,<\/span> &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"st_h\">'ADAPTIVE ALLSTATS LAST'<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n<span class=\"sy0\">------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\nSQL_ID &nbsp;6v7qnmxnyf0ru<span class=\"sy0\">,<\/span> child number <span class=\"nu0\">0<\/span><br \/>\n<span class=\"sy0\">-------------------------------------<\/span><br \/>\nselect <span class=\"coMULTI\">\/* dbtw-062.3 *\/<\/span> u<span class=\"sy0\">.<\/span>codigo<span class=\"sy0\">,<\/span> u<span class=\"sy0\">.<\/span>login &nbsp;FROM dbtw_usuario u INNER<br \/>\n<a href=\"http:\/\/www.php.net\/join\"><span class=\"kw3\">JOIN<\/span><\/a> dbtw_grupo g &nbsp; &nbsp;ON u<span class=\"sy0\">.<\/span>id_grupo <span class=\"sy0\">=<\/span> g<span class=\"sy0\">.<\/span>id_grupo WHERE u<span class=\"sy0\">.<\/span>status NOT IN<br \/>\n<span class=\"br0\">&#40;<\/span><span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_3&quot;<\/span><span class=\"sy0\">,<\/span> <span class=\"sy0\">:<\/span><span class=\"st0\">&quot;SYS_B_4&quot;<\/span><span class=\"br0\">&#41;<\/span> &nbsp; AND u<span class=\"sy0\">.<\/span>login like <span class=\"st_h\">'%'<\/span><span class=\"sy0\">||:<\/span>LOGIN<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\">1119022536<\/span><br \/>\n<br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; Id &nbsp;<span class=\"sy0\">|<\/span> Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> Starts <span class=\"sy0\">|<\/span> E<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> A<span class=\"sy0\">-<\/span>Rows <span class=\"sy0\">|<\/span> &nbsp; A<span class=\"sy0\">-<\/span><a href=\"http:\/\/www.php.net\/time\"><span class=\"kw3\">Time<\/span><\/a> &nbsp; <span class=\"sy0\">|<\/span> Buffers <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">-----------------------------------------------------------------------------------------------------------------------------<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">72<\/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.06<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1086<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|-<\/span> <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;369K<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">72<\/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.06<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1086<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">2<\/span> <span class=\"sy0\">|<\/span> &nbsp; NESTED LOOPS &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;369K<span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">72<\/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.06<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1086<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|-<\/span> &nbsp; &nbsp;<span class=\"nu0\">3<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;STATISTICS COLLECTOR &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &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.06<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1078<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp;<span class=\"sy0\">*<\/span> &nbsp;<span class=\"nu0\">4<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; TABLE ACCESS BY INDEX ROWID BATCHED<span class=\"sy0\">|<\/span> DBTW_USUARIO &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; <span class=\"nu0\">3271<\/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.06<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1078<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp;<span class=\"sy0\">*<\/span> &nbsp;<span class=\"nu0\">5<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> DBTW_USUARIO_LOGIN_IDX <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">17500<\/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.06<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">1077<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|<\/span> &nbsp;<span class=\"sy0\">*<\/span> &nbsp;<span class=\"nu0\">6<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;INDEX <a href=\"http:\/\/www.php.net\/range\"><span class=\"kw3\">RANGE<\/span><\/a> SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> DBTW_ID_GRUPO_IDX &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">1<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp;<span class=\"nu0\">113<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; <span class=\"nu0\">72<\/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\">8<\/span> <span class=\"sy0\">|<\/span><br \/>\n<span class=\"sy0\">|-<\/span> &nbsp; &nbsp;<span class=\"nu0\">7<\/span> <span class=\"sy0\">|<\/span> &nbsp; INDEX FAST FULL SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class=\"sy0\">|<\/span> DBTW_ID_GRUPO_IDX &nbsp; &nbsp; &nbsp;<span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/span> <span class=\"sy0\">|<\/span> &nbsp;<span class=\"nu0\">15861<\/span> <span class=\"sy0\">|<\/span> &nbsp; &nbsp; &nbsp;<span class=\"nu0\">0<\/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\">0<\/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;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;G&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"nu0\">4<\/span> <span class=\"sy0\">-<\/span> filter<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;STATUS&quot;<\/span><span class=\"sy0\">&lt;&gt;:<\/span>SYS_B_3 AND <span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;STATUS&quot;<\/span><span class=\"sy0\">&lt;&gt;:<\/span>SYS_B_4<span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"nu0\">5<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;LOGIN&quot;<\/span> LIKE <span class=\"st_h\">'%'<\/span><span class=\"sy0\">||:<\/span>LOGIN<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp;filter<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;LOGIN&quot;<\/span> LIKE <span class=\"st_h\">'%'<\/span><span class=\"sy0\">||:<\/span>LOGIN<span class=\"br0\">&#41;<\/span><br \/>\n&nbsp; &nbsp;<span class=\"nu0\">6<\/span> <span class=\"sy0\">-<\/span> access<span class=\"br0\">&#40;<\/span><span class=\"st0\">&quot;U&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"sy0\">=<\/span><span class=\"st0\">&quot;G&quot;<\/span><span class=\"sy0\">.<\/span><span class=\"st0\">&quot;ID_GRUPO&quot;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\nNote<br \/>\n<span class=\"sy0\">-----<\/span><br \/>\n&nbsp; &nbsp;<span class=\"sy0\">-<\/span> this is an adaptive plan <span class=\"br0\">&#40;<\/span>rows marked <span class=\"st_h\">'-'<\/span> are inactive<span class=\"br0\">&#41;<\/span><br \/>\n<br \/>\n<br \/>\n<span class=\"nu0\">34<\/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, a se\u00e7\u00e3o NOTE apresenta a mensagem &#8220;this is an adaptive plan&#8221;, isto significa que o Otimizador utilizou um novo recurso chamado ADAPTIVE QUERY OPTIMIZATION que permite ao Otimizador alterar o plano de execu\u00e7\u00e3o durante a execu\u00e7\u00e3o da instru\u00e7\u00e3o SQL. Se voc\u00ea analisar o plano de execu\u00e7\u00e3o com mais cuidado vai verificar que existem algumas opera\u00e7\u00f5es que foram assinaladas com o caracter &#8220;-&#8221; na coluna ID, isto significa que estas opera\u00e7\u00f5es foram desativadas ou desconsideradas. Como resultado podemos observar que o desempenho desta consulta foi igual ao desempenho da consulta executada na base 11g com os HINTs para melhoria de performance.<\/span><\/p>\n<h1 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">CONCLUS\u00c3O<\/span><\/h1>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Esta \u00e9 uma pequena amostra de como o Otimizador do Oracle Database evoluiu nas ultimas vers\u00f5es, se voc\u00ea ainda esta em d\u00favida se vale a pena fazer o Upgrade para a vers\u00e3o 19c, saiba que alem da manuten\u00e7\u00e3o do suporte e das melhorias de seguran\u00e7a, voc\u00ea esta perdendo a oportunidade de melhorar a performance de suas aplica\u00e7\u00f5es.<\/span><\/p>\n<h1 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias<\/span><\/h1>\n<p><strong><span style=\"font-size: 12pt;\"><a href=\"https:\/\/docs.oracle.com\/database\/121\/TGSQL\/tgsql_optcncpt.htm#TGSQL94982\" target=\"_blank\">https:\/\/docs.oracle.com\/database\/121\/<\/a><\/span><\/strong><\/p>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n<a href=\"http:\/\/dbtimewizard.com.br\/treinamento\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1255\" src=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2018\/10\/promo_cur02.jpg\" alt=\"Promo-D75L\" width=\"330\" height=\"242\" \/><\/a><\/p>\n<p><a href=\"https:\/\/youtu.be\/l6OphhTle9I\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright size-full wp-image-1215\" src=\"http:\/\/dbtimewizard.com.br\/wp-content\/uploads\/2018\/01\/video-02-300x168.jpg\" alt=\"video-02\" width=\"330\" height=\"242\" \/><\/a><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>O Otimizador do Oracle vem sendo aprimorado a cada nova vers\u00e3o, a partir da 12c foram introduzidas muitas melhorias que tornaram o Otimizador muito mais eficente na escolha dos planos de execu\u00e7\u00e3o, nas vers\u00f5es anteriores o Otimizador tinha algumas limita\u00e7\u00f5es que o impedia de escolher planos de execu\u00e7\u00e3o melhores. Na vers\u00e3o 19c o Otimizador n\u00e3o alcan\u00e7ou a perfei\u00e7\u00e3o, mas houve<\/p>\n","protected":false},"author":2,"featured_media":2113,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[223,222,129,224,42,82,10],"class_list":["post-2112","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cost-base-optimizer","tag-adaptive-plan","tag-adaptive-query-optimization","tag-cardinalidade","tag-complex-predicate","tag-cost-base-optimizer","tag-optimizer","tag-otimizador"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/2112","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=2112"}],"version-history":[{"count":12,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/2112\/revisions"}],"predecessor-version":[{"id":2128,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/2112\/revisions\/2128"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/2113"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=2112"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=2112"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=2112"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}