{"id":1578,"date":"2018-05-13T20:51:49","date_gmt":"2018-05-13T23:51:49","guid":{"rendered":"http:\/\/dbtimewizard.com.br\/blog\/?p=1578"},"modified":"2019-11-11T18:45:25","modified_gmt":"2019-11-11T21:45:25","slug":"voce-tambem-menospreza-esta-questao","status":"publish","type":"post","link":"http:\/\/dbtimewizard.com.br\/blog\/voce-tambem-menospreza-esta-questao\/","title":{"rendered":"Voc\u00ea tambem menospreza esta quest\u00e3o?"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">\u00c9 comum pensar que uma instru\u00e7\u00e3o SQL que acessa uma linha numa tabela pequena \u00e9 muito r\u00e1pida e n\u00e3o devemos perder tempo em verificar se \u00e9 mais r\u00e1pido fazer um FULL SCAN na tabela ou utilizar um \u00edndice para fazer o acesso. Muitas aplica\u00e7\u00f5es utilizam tabelas pequenas como par\u00e2metros da aplica\u00e7\u00e3o e dependendo da quantidade de usu\u00e1rios e itera\u00e7\u00e3o destes com o sistema estas tabelas podem ser acessadas milhares de vezes por segundo, para estes casos o tempo e a quantidade de recursos gastos pelo banco para acessar uma linha da tabela s\u00e3o muito importantes e podem fazer muita diferen\u00e7a.<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Pensando na import\u00e2ncia deste assunto, neste artigo vamos fazer algumas simula\u00e7\u00f5es para responder a seguinte quest\u00e3o:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Qual a melhor maneira para acessar uma linha numa tabela pequena:<\/span><\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">1) Seria atrav\u00e9s de um \u00edndice de chave primaria?<\/span><br \/>\n<span style=\"font-size: 12pt;\"> 2) Seria atrav\u00e9s de um \u00edndice de chave n\u00e3o unica?<\/span><br \/>\n<span style=\"font-size: 12pt;\"> 3) Seria atrav\u00e9s de uma tabela IOT?<\/span><br \/>\n<span style=\"font-size: 12pt;\"> 4) Seria atrav\u00e9s de uma opera\u00e7\u00e3o TABLE FULL SCAN?<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">1) Lendo uma linha usando \u00edndice de chave prim\u00e1ria<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Nesta primeira simula\u00e7\u00e3o vamos criar uma tabela pequena com um \u00edndice de chave prim\u00e1ria que ser\u00e1 utilizada no filtro da cl\u00e1usula WHERE para selecionar a linha desejada.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>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 \/><\/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> DROP TABLE dbtw_employees purge<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela eliminada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw_employees <span class=\"br0\">&#40;<\/span>EMPLOYEE_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span> PRIMARY <a href=\"http:\/\/www.php.net\/key\"><span class=\"kw3\">KEY<\/span><\/a><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIRST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LAST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EMAIL &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PHONE_NUMBER &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HIRE_DATE &nbsp;<a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">DATE<\/span><\/a> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SALARY &nbsp;NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">8<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMISSION_PCT NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MANAGER_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DEPARTMENT_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">4<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> INSERT INTO dbtw_employees SELECT <span class=\"sy0\">*<\/span> FROM hr<span class=\"sy0\">.<\/span>employees where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">61<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">60<\/span> linhas criadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> COMMIT<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit conclu\u00ed<span class=\"kw1\">do<\/span><span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname<span class=\"sy0\">=&gt;<\/span>USER<span class=\"sy0\">,<\/span> tabname<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'DBTW_EMPLOYEES'<\/span><span class=\"sy0\">,<\/span> method_opt<span class=\"sy0\">=&gt;<\/span>\u2019<span class=\"kw1\">FOR<\/span> ALL COLUMNS SIZE AUTO<span class=\"st_h\">', cascade=&gt;true);<br \/>\n<br \/>\nProcedimento PL\/SQL conclu\u00eddo com sucesso.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; ALTER SESSION SET statistics_level=ALL;<br \/>\n<br \/>\nSess\u00e3o alterada.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT \/* dbtw001 &nbsp;*\/ first_name, job_id, salary<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM dbtw_employees<br \/>\n&nbsp; 3 &nbsp; WHERE employee_id=143;<br \/>\n<br \/>\nFIRST_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp; &nbsp; &nbsp; &nbsp; SALARY<br \/>\n-------------------- ---------- ----------<br \/>\nRandall &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ST_CLERK &nbsp; &nbsp; &nbsp; &nbsp; 2600<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; column sql_id new_value m_sql_id<br \/>\nSQL &gt; column child_number new_value m_child_no<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT sql_id, child_number<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM v$sql<br \/>\n&nbsp; 3 &nbsp; WHERE sql_text LIKE '<\/span><span class=\"sy0\">%<\/span>dbtw001<span class=\"sy0\">%<\/span><span class=\"st_h\">'<br \/>\n&nbsp; 4 &nbsp; &nbsp; AND sql_text NOT LIKE '<\/span><span class=\"sy0\">%<\/span>v<span class=\"re0\">$sql<\/span><span class=\"sy0\">%<\/span><span class=\"st_h\">';<br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n------------- ------------<br \/>\nb5gb48ay5f5sh &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT *<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'));<br \/>\nantigo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\nnovo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span>b5gb48ay5f5sh<span class=\"st_h\">', &nbsp; &nbsp; &nbsp; &nbsp; 0,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br \/>\nSQL_ID &nbsp;b5gb48ay5f5sh, child number 0<br \/>\n-------------------------------------<br \/>\nSELECT \/* dbtw001 &nbsp;*\/ first_name, job_id, salary &nbsp; FROM dbtw_employees<br \/>\nWHERE employee_id=:&quot;SYS_B_0&quot;<br \/>\n<br \/>\nPlan hash value: 3344810242<br \/>\n<br \/>\n----------------------------------------------------------------------------------------------------------------------------------------<br \/>\n| Id &nbsp;| Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time &nbsp; | A-Rows | &nbsp; A-Time &nbsp; | Buffers |<br \/>\n----------------------------------------------------------------------------------------------------------------------------------------<br \/>\n| &nbsp; 0 | SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; 1 (100)| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 2 |<br \/>\n| &nbsp; 1 | &nbsp;TABLE ACCESS BY INDEX ROWID| DBTW_EMPLOYEES | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp;24 | &nbsp; &nbsp; 1 &nbsp; (0)| 00:00:01 | &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 2 |<br \/>\n|* &nbsp;2 | &nbsp; INDEX UNIQUE SCAN &nbsp; &nbsp; &nbsp; &nbsp; | SYS_C00315322 &nbsp;| &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; 0 &nbsp; (0)| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 1 |<br \/>\n----------------------------------------------------------------------------------------------------------------------------------------<br \/>\n<br \/>\nPredicate Information (identified by operation id):<br \/>\n---------------------------------------------------<br \/>\n<br \/>\n&nbsp; &nbsp;2 - access(&quot;EMPLOYEE_ID&quot;=:SYS_B_0)<br \/>\n<br \/>\n<br \/>\n20 linhas selecionadas.<br \/>\n<br \/>\nSQL &gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Como podemos observar no plano de execu\u00e7\u00e3o da consulta, foram lidos 2 Buffers ou 2 blocos no Buffer Cache para acessar uma linha da tabela.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">2) Lendo uma linha usando \u00edndice de chave n\u00e3o unica<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Agora vamos fazer uma simula\u00e7\u00e3o com mesma tabela s\u00f3 que desta vez vamos utilizar um \u00edndice n\u00e3o \u00fanico no mesmo campo da tabela onde na primeira simula\u00e7\u00e3o havia um \u00edndice de chave primaria.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>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 \/><\/div><\/td><td><div class=\"php codecolorer\">SQL <span class=\"sy0\">&gt;<\/span> DROP TABLE dbtw_employees purge<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela eliminada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw_employees <span class=\"br0\">&#40;<\/span>EMPLOYEE_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIRST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LAST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EMAIL &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PHONE_NUMBER &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HIRE_DATE &nbsp;<a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">DATE<\/span><\/a> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SALARY &nbsp;NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">8<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMISSION_PCT NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MANAGER_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DEPARTMENT_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">4<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> INSERT INTO dbtw_employees SELECT <span class=\"sy0\">*<\/span> FROM hr<span class=\"sy0\">.<\/span>employees where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">61<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">60<\/span> linhas criadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> COMMIT<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit conclu\u00ed<span class=\"kw1\">do<\/span><span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE INDEX dbtw_employees_idx on dbtw_employees<span class=\"br0\">&#40;<\/span>EMPLOYEE_ID<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_EMPLOYEES'<\/span><span class=\"sy0\">,<\/span> method_opt<span class=\"sy0\">=&gt;<\/span>\u2019<span class=\"kw1\">FOR<\/span> ALL COLUMNS SIZE AUTO<span class=\"st_h\">', cascade=&gt;true);<br \/>\n<br \/>\nProcedimento PL\/SQL conclu\u00eddo com sucesso.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; ALTER SESSION SET statistics_level=ALL;<br \/>\n<br \/>\nSess\u00e3o alterada.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT \/* dbtw002 &nbsp;*\/ first_name, job_id, salary<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM dbtw_employees<br \/>\n&nbsp; 3 &nbsp; WHERE employee_id=143;<br \/>\n<br \/>\nFIRST_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp; &nbsp; &nbsp; &nbsp; SALARY<br \/>\n-------------------- ---------- ----------<br \/>\nRandall &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ST_CLERK &nbsp; &nbsp; &nbsp; &nbsp; 2600<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; column sql_id new_value m_sql_id<br \/>\nSQL &gt; column child_number new_value m_child_no<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT sql_id, child_number<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM v$sql<br \/>\n&nbsp; 3 &nbsp; WHERE sql_text LIKE '<\/span><span class=\"sy0\">%<\/span>dbtw002<span class=\"sy0\">%<\/span><span class=\"st_h\">'<br \/>\n&nbsp; 4 &nbsp; &nbsp; AND sql_text NOT LIKE '<\/span><span class=\"sy0\">%<\/span>v<span class=\"re0\">$sql<\/span><span class=\"sy0\">%<\/span><span class=\"st_h\">';<br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n------------- ------------<br \/>\n93pdp53t14ukg &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT *<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'));<br \/>\nantigo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\nnovo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span>93pdp53t14ukg<span class=\"st_h\">', &nbsp; &nbsp; &nbsp; &nbsp; 0,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br \/>\nSQL_ID &nbsp;93pdp53t14ukg, child number 0<br \/>\n-------------------------------------<br \/>\nSELECT \/* dbtw002 &nbsp;*\/ first_name, job_id, salary &nbsp; FROM dbtw_employees<br \/>\nWHERE employee_id=:&quot;SYS_B_0&quot;<br \/>\n<br \/>\nPlan hash value: 3843110344<br \/>\n<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------<br \/>\n| Id &nbsp;| Operation &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time &nbsp; | A-Rows | &nbsp; A-Time &nbsp; | Buffers |<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------<br \/>\n| &nbsp; 0 | SELECT STATEMENT &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; 2 (100)| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 3 |<br \/>\n| &nbsp; 1 | &nbsp;TABLE ACCESS BY INDEX ROWID| DBTW_EMPLOYEES &nbsp; &nbsp; | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp;24 | &nbsp; &nbsp; 2 &nbsp; (0)| 00:00:01 | &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 3 |<br \/>\n|* &nbsp;2 | &nbsp; INDEX RANGE SCAN &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| DBTW_EMPLOYEES_IDX | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; 1 &nbsp; (0)| 00:00:01 | &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 2 |<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------<br \/>\n<br \/>\nPredicate Information (identified by operation id):<br \/>\n---------------------------------------------------<br \/>\n<br \/>\n&nbsp; &nbsp;2 - access(&quot;EMPLOYEE_ID&quot;=:SYS_B_0)<br \/>\n<br \/>\n<br \/>\n20 linhas selecionadas.<br \/>\n<br \/>\nSQL &gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Nesta simula\u00e7\u00e3o o resultado foi pior, pois foram necess\u00e1rias a leitura de 3 Buffers contra a leitura de 2 na primeira simula\u00e7\u00e3o.<\/span><\/p>\n<p>&nbsp;<\/p>\n<h2><span style=\"font-size: 14pt;\">3) Lendo uma linha usando uma tabela IOT<\/span><\/h2>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Nesta simula\u00e7\u00e3o vamos utilizar uma tabela IOT (Index-Organized Table) com a mesma estrutura da tabela utilizada nas simula\u00e7\u00f5es anteriores e a mesma quantidade de linhas.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>60<br \/>61<br \/>62<br \/>63<br \/>64<br \/>65<br \/>66<br \/>67<br \/>68<br \/>69<br \/>70<br \/>71<br \/>72<br \/>73<br \/>74<br \/>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> DROP TABLE dbtw_employees purge<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela eliminada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw_employees <span class=\"br0\">&#40;<\/span>EMPLOYEE_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span> PRIMARY <a href=\"http:\/\/www.php.net\/key\"><span class=\"kw3\">KEY<\/span><\/a><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIRST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LAST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EMAIL &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PHONE_NUMBER &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HIRE_DATE &nbsp;<a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">DATE<\/span><\/a> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SALARY &nbsp;NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">8<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMISSION_PCT NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MANAGER_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DEPARTMENT_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">4<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n&nbsp;<span class=\"nu0\">12<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; ORGANIZATION INDEX<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> INSERT INTO dbtw_employees SELECT <span class=\"sy0\">*<\/span> FROM hr<span class=\"sy0\">.<\/span>employees where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">61<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">60<\/span> linhas criadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> COMMIT<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit conclu\u00ed<span class=\"kw1\">do<\/span><span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname<span class=\"sy0\">=&gt;<\/span>USER<span class=\"sy0\">,<\/span> tabname<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'DBTW_EMPLOYEES'<\/span><span class=\"sy0\">,<\/span> method_opt<span class=\"sy0\">=&gt;<\/span>\u2019<span class=\"kw1\">FOR<\/span> ALL COLUMNS SIZE AUTO<span class=\"st_h\">', cascade=&gt;true);<br \/>\n<br \/>\nProcedimento PL\/SQL conclu\u00eddo com sucesso.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; &nbsp; ALTER SESSION SET statistics_level=ALL;<br \/>\n<br \/>\nSess\u00e3o alterada.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT \/* dbtw003 &nbsp;*\/ first_name, job_id, salary<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM dbtw_employees<br \/>\n&nbsp; 3 &nbsp; WHERE employee_id=143;<br \/>\n<br \/>\nFIRST_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp; &nbsp; &nbsp; &nbsp; SALARY<br \/>\n-------------------- ---------- ----------<br \/>\nRandall &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ST_CLERK &nbsp; &nbsp; &nbsp; &nbsp; 2600<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; column sql_id new_value m_sql_id<br \/>\nSQL &gt; column child_number new_value m_child_no<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT sql_id, child_number<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM v$sql<br \/>\n&nbsp; 3 &nbsp; WHERE sql_text LIKE '<\/span><span class=\"sy0\">%<\/span>dbtw003<span class=\"sy0\">%<\/span><span class=\"st_h\">'<br \/>\n&nbsp; 4 &nbsp; &nbsp; AND sql_text NOT LIKE '<\/span><span class=\"sy0\">%<\/span>v<span class=\"re0\">$sql<\/span><span class=\"sy0\">%<\/span><span class=\"st_h\">';<br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n------------- ------------<br \/>\n4q5p4cbkrm6wj &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT *<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'));<br \/>\nantigo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\nnovo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span>4q5p4cbkrm6wj<span class=\"st_h\">', &nbsp; &nbsp; &nbsp; &nbsp; 0,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br \/>\nSQL_ID &nbsp;4q5p4cbkrm6wj, child number 0<br \/>\n-------------------------------------<br \/>\nSELECT \/* dbtw003 &nbsp;*\/ first_name, job_id, salary &nbsp; FROM dbtw_employees<br \/>\nWHERE employee_id=:&quot;SYS_B_0&quot;<br \/>\n<br \/>\nPlan hash value: 4091736222<br \/>\n<br \/>\n-----------------------------------------------------------------------------------------------------------------------<br \/>\n| Id &nbsp;| Operation &nbsp; &nbsp; &nbsp; &nbsp; | Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Starts | E-Rows |E-Bytes| Cost (%CPU)| A-Rows | &nbsp; A-Time &nbsp; | Buffers |<br \/>\n-----------------------------------------------------------------------------------------------------------------------<br \/>\n| &nbsp; 0 | SELECT STATEMENT &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; 1 (100)| &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 1 |<br \/>\n|* &nbsp;1 | &nbsp;INDEX UNIQUE SCAN| SYS_IOT_TOP_488246 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp;24 | &nbsp; &nbsp; 0 &nbsp; (0)| &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 1 |<br \/>\n-----------------------------------------------------------------------------------------------------------------------<br \/>\n<br \/>\nPredicate Information (identified by operation id):<br \/>\n---------------------------------------------------<br \/>\n<br \/>\n&nbsp; &nbsp;1 - access(&quot;EMPLOYEE_ID&quot;=:SYS_B_0)<br \/>\n<br \/>\n<br \/>\n19 linhas selecionadas.<br \/>\n<br \/>\nSQL &gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\">Verificando o plano de execu\u00e7\u00e3o parece que encontramos a vencedora dessa disputa, utilizando a tabela IOT para recuperar uma linha da tabela foi necess\u00e1ria a leitura de 1 Buffer.<\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">4) Lendo uma linha da tabela usando TABLE FULL SCAN<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Por ultimo vamos criar a mesma tabela sem \u00edndices e verficar qual ser\u00e1 o desempenho de um TABLE FULL SCAN para recuperar a mesma linha da tabela.<\/span><\/p>\n<p>&nbsp;<\/p>\n<div class=\"codecolorer-container php default codecolorer-noborder\" style=\"overflow:auto;white-space:nowrap;width:800px;height:520px;\"><table cellspacing=\"0\" cellpadding=\"0\"><tbody><tr><td class=\"line-numbers\"><div>1<br \/>2<br \/>3<br \/>4<br \/>5<br \/>6<br \/>7<br \/>8<br \/>9<br \/>10<br \/>11<br \/>12<br \/>13<br \/>14<br \/>15<br \/>16<br \/>17<br \/>18<br \/>19<br \/>20<br \/>21<br \/>22<br \/>23<br \/>24<br \/>25<br \/>26<br \/>27<br \/>28<br \/>29<br \/>30<br \/>31<br \/>32<br \/>33<br \/>34<br \/>35<br \/>36<br \/>37<br \/>38<br \/>39<br \/>40<br \/>41<br \/>42<br \/>43<br \/>44<br \/>45<br \/>46<br \/>47<br \/>48<br \/>49<br \/>50<br \/>51<br \/>52<br \/>53<br \/>54<br \/>55<br \/>56<br \/>57<br \/>58<br \/>59<br \/>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> DROP TABLE dbtw_employees purge<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nTabela eliminada<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> CREATE TABLE dbtw_employees &nbsp;<span class=\"br0\">&#40;<\/span>EMPLOYEE_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">2<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FIRST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">3<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LAST_NAME VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">4<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; EMAIL &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">25<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">5<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PHONE_NUMBER &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">20<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">6<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HIRE_DATE &nbsp;<a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">DATE<\/span><\/a> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">7<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp;VARCHAR2<span class=\"br0\">&#40;<\/span><span class=\"nu0\">10<\/span><span class=\"br0\">&#41;<\/span> NOT <span class=\"kw4\">NULL<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">8<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; SALARY &nbsp;NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">8<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp; <span class=\"nu0\">9<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; COMMISSION_PCT NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">2<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">10<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; MANAGER_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">6<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><br \/>\n&nbsp;<span class=\"nu0\">11<\/span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; DEPARTMENT_ID NUMBER<span class=\"br0\">&#40;<\/span><span class=\"nu0\">4<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/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><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> INSERT INTO dbtw_employees SELECT <span class=\"sy0\">*<\/span> FROM hr<span class=\"sy0\">.<\/span>employees where rownum <span class=\"sy0\">&lt;<\/span> <span class=\"nu0\">61<\/span><span class=\"sy0\">;<\/span><br \/>\n<br \/>\n<span class=\"nu0\">60<\/span> linhas criadas<span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> COMMIT<span class=\"sy0\">;<\/span><br \/>\n<br \/>\nCommit conclu\u00ed<span class=\"kw1\">do<\/span><span class=\"sy0\">.<\/span><br \/>\n<br \/>\nSQL <span class=\"sy0\">&gt;<\/span><br \/>\nSQL <span class=\"sy0\">&gt;<\/span> <a href=\"http:\/\/www.php.net\/exec\"><span class=\"kw3\">exec<\/span><\/a> dbms_stats<span class=\"sy0\">.<\/span>gather_table_stats<span class=\"br0\">&#40;<\/span>ownname<span class=\"sy0\">=&gt;<\/span>USER<span class=\"sy0\">,<\/span> tabname<span class=\"sy0\">=&gt;<\/span><span class=\"st_h\">'DBTW_EMPLOYEES'<\/span><span class=\"sy0\">,<\/span> method_opt<span class=\"sy0\">=&gt;<\/span>\u2019<span class=\"kw1\">FOR<\/span> ALL COLUMNS SIZE AUTO<span class=\"st_h\">', cascade=&gt;true);<br \/>\n<br \/>\nProcedimento PL\/SQL conclu\u00eddo com sucesso.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; ALTER SESSION SET statistics_level=ALL;<br \/>\n<br \/>\nSess\u00e3o alterada.<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT \/* dbtw004 &nbsp;*\/ first_name, job_id, salary<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM dbtw_employees<br \/>\n&nbsp; 3 &nbsp; WHERE employee_id=143;<br \/>\n<br \/>\nFIRST_NAME &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; JOB_ID &nbsp; &nbsp; &nbsp; &nbsp; SALARY<br \/>\n-------------------- ---------- ----------<br \/>\nRandall &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ST_CLERK &nbsp; &nbsp; &nbsp; &nbsp; 2600<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt; column sql_id new_value m_sql_id<br \/>\nSQL &gt; column child_number new_value m_child_no<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT sql_id, child_number<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM v$sql<br \/>\n&nbsp; 3 &nbsp; WHERE sql_text LIKE '<\/span><span class=\"sy0\">%<\/span>dbtw004<span class=\"sy0\">%<\/span><span class=\"st_h\">'<br \/>\n&nbsp; 4 &nbsp; &nbsp; AND sql_text NOT LIKE '<\/span><span class=\"sy0\">%<\/span>v<span class=\"re0\">$sql<\/span><span class=\"sy0\">%<\/span><span class=\"st_h\">';<br \/>\n<br \/>\nSQL_ID &nbsp; &nbsp; &nbsp; &nbsp;CHILD_NUMBER<br \/>\n------------- ------------<br \/>\n2vnw6mgfa490h &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;0<br \/>\n<br \/>\nSQL &gt;<br \/>\nSQL &gt;<br \/>\nSQL &gt; SELECT *<br \/>\n&nbsp; 2 &nbsp; &nbsp;FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'));<br \/>\nantigo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span><span class=\"sy0\">&amp;<\/span>m_sql_id<span class=\"st_h\">',&amp;m_child_no,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\nnovo &nbsp; 2: &nbsp; FROM TABLE (dbms_xplan.display_cursor ('<\/span>2vnw6mgfa490h<span class=\"st_h\">', &nbsp; &nbsp; &nbsp; &nbsp; 0,'<\/span>typical iostats last<span class=\"st_h\">'))<br \/>\n<br \/>\nPLAN_TABLE_OUTPUT<br \/>\n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br \/>\nSQL_ID &nbsp;2vnw6mgfa490h, child number 0<br \/>\n-------------------------------------<br \/>\nSELECT \/* dbtw004 &nbsp;*\/ first_name, job_id, salary &nbsp; FROM dbtw_employees<br \/>\nWHERE employee_id=:&quot;SYS_B_0&quot;<br \/>\n<br \/>\nPlan hash value: 1134787269<br \/>\n<br \/>\n------------------------------------------------------------------------------------------------------------------------------<br \/>\n| Id &nbsp;| Operation &nbsp; &nbsp; &nbsp; &nbsp; | Name &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; | Starts | E-Rows |E-Bytes| Cost (%CPU)| E-Time &nbsp; | A-Rows | &nbsp; A-Time &nbsp; | Buffers |<br \/>\n------------------------------------------------------------------------------------------------------------------------------<br \/>\n| &nbsp; 0 | SELECT STATEMENT &nbsp;| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp; | &nbsp; &nbsp; 2 (100)| &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;| &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 7 |<br \/>\n|* &nbsp;1 | &nbsp;TABLE ACCESS FULL| DBTW_EMPLOYEES | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp; &nbsp;1 | &nbsp; &nbsp;24 | &nbsp; &nbsp; 2 &nbsp; (0)| 00:00:01 | &nbsp; &nbsp; &nbsp;1 |00:00:00.01 | &nbsp; &nbsp; &nbsp; 7 |<br \/>\n------------------------------------------------------------------------------------------------------------------------------<br \/>\n<br \/>\nPredicate Information (identified by operation id):<br \/>\n---------------------------------------------------<br \/>\n<br \/>\n&nbsp; &nbsp;1 - filter(&quot;EMPLOYEE_ID&quot;=:SYS_B_0)<br \/>\n<br \/>\n<br \/>\n19 linhas selecionadas.<br \/>\n<br \/>\nSQL &gt;<\/span><\/div><\/td><\/tr><\/tbody><\/table><\/div>\n<p>&nbsp;<\/p>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">Consultando o plano de execu\u00e7\u00e3o verificamos que o desempenho de uma opera\u00e7\u00e3o TABLE FULL SCAN no nosso caso \u00e9 muito ruim, foram necess\u00e1rias a leitura de 7 Buffers para retorna um linha da tabela.<\/span><\/p>\n<h2><span style=\"font-size: 14pt;\">Conclus\u00e3o<\/span><\/h2>\n<p style=\"text-align: justify;\"><span style=\"font-size: 12pt;\">O melhor m\u00e9todo de acesso para recuperar uma linha da tabela em nossas simula\u00e7\u00f5es foi a utiliza\u00e7\u00e3o da tabela IOT. Nos pr\u00f3ximos trabalhos de Tuning quando se deparar com uma tabela pequena que seja muito acessada pela aplica\u00e7\u00e3o e que consuma boa parte dos recursos do banco, considere a utiliza\u00e7\u00e3o de tabela IOT.<\/span><\/p>\n<h2 style=\"text-align: justify;\"><span style=\"font-size: 14pt;\">Refer\u00eancias:<\/span><\/h2>\n<p><span style=\"font-size: 12pt;\"><a href=\"https:\/\/docs.oracle.com\/cd\/E25054_01\/server.1111\/e25789\/indexiot.htm#CBBJEBIH\" target=\"_blank\">https:\/\/docs.oracle.com\/cd\/E25054_01\/server.1111\/e25789\/indexiot.htm<\/a><\/span><\/p>\n<p>&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n<a href=\"http:\/\/dbtimewizard.com.br\/treinamento\/\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-1255\" src=\"http:\/\/dbtimewizard.com.br\/blog\/wp-content\/uploads\/2018\/10\/promo_cur02.jpg\" 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>\u00c9 comum pensar que uma instru\u00e7\u00e3o SQL que acessa uma linha numa tabela pequena \u00e9 muito r\u00e1pida e n\u00e3o devemos perder tempo em verificar se \u00e9 mais r\u00e1pido fazer um FULL SCAN na tabela ou utilizar um \u00edndice para fazer o acesso. Muitas aplica\u00e7\u00f5es utilizam tabelas pequenas como par\u00e2metros da aplica\u00e7\u00e3o e dependendo da quantidade de usu\u00e1rios e itera\u00e7\u00e3o destes<\/p>\n","protected":false},"author":2,"featured_media":1581,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[6,36,197,82,10,11,198],"class_list":["post-1578","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-execution-plan","tag-cbo","tag-execution-plan","tag-iot-table","tag-optimizer","tag-otimizador","tag-plano-de-execucao","tag-tabela-iot"],"aioseo_notices":[],"_links":{"self":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1578","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=1578"}],"version-history":[{"count":23,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1578\/revisions"}],"predecessor-version":[{"id":2076,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/posts\/1578\/revisions\/2076"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media\/1581"}],"wp:attachment":[{"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1578"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1578"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/dbtimewizard.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1578"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}