Lendas de Índices: Tabelas Pequenas

Há uma lenda que diz que em tabelas pequenas índices não são utilizados.

Isto não é verdade, como por exemplo quando só é necessária a informação que está indexada – não há acesso a colunas não indexadas da tabela.

SQL> CREATE TABLE T (C1 NUMBER);

Table created.

SQL> CREATE INDEX IDX_T ON T(C1);

Index created.

SQL> INSERT INTO T VALUES (1);

1 row created.

SQL> INSERT INTO T VALUES (2);

1 row created.

SQL> SET AUTOTRACE TRACEONLY EXPLAIN
SQL> SELECT C1 FROM T WHERE C1 = 1;

Execution Plan
----------------------------------------------------------
Plan hash value: 2296882198

--------------------------------------------------------------------------
| Id  | Operation        | Name  | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------
|   0 | SELECT STATEMENT |       |     1 |    13 |     1   (0)| 00:00:01 |
|*  1 |  INDEX RANGE SCAN| IDX_T |     1 |    13 |     1   (0)| 00:00:01 |
--------------------------------------------------------------------------

SQL>

4 comments

  1. Imagina centenas de tabelas pequenas sem índices,seria um caos em matéria de performance.
    Portilho como sempre desmitificando as lendas urbanas,muito bom.

  2. Portilho obrigado pela sua dedicação em colaborar com os DBA Oracle. Cara você é um profissional especial.

Leave a Reply

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.