GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Tabela Dual – O que é isso?

Olá Pessoal,

Vou falar um pouco sobre a tabela dual, para que ela serve e como ela vem otimizada na versão 10g.
A tabela Dual é muito utilizada pelos desenvolvedores, DBAs e pela própria Oracle para fazer operações com select aonde não é necessário fazer extração de dados em tabelas. Basicamente ela ajuda a manter a sintaxe correta de um select aonde não teremos uma tabela na consulta.

Observem a consulta abaixo executada no 9i

SQL> SELECT SYSDATE
2  FROM   dual;

1 row selected.

Execution Plan

0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=5 Card=8168)
1    0   TABLE ACCESS (FULL) OF 'DUAL' (Cost=5 Card=8168)

Statistics

1  recursive calls
0  db block gets
3  consistent gets
0  physical reads
0  redo size
194  bytes sent via SQLNet to client
341  bytes received via SQLNet from client
2  SQL*Net roundtrips to/from client
0  sorts (memory)
0  sorts (disk)
1  rows processed

Agora vamos executar  a mesma consulta no 10g

SQL> set autotrace traceonly

SQL> SELECT SYSDATE
2  FROM   dual;

1 row selected.

Execution Plan

0      SELECT STATEMENT Optimizer=ALL_ROWS (Cost=2 Card=1)
1    0   FAST DUAL (Cost=2 Card=1)

Statistics

1  recursive calls
0  db block gets
0  consistent gets
0  physical reads
0  redo size
203  bytes sent via SQLNet to client
342  bytes received via SQLNet from client
2  SQL*Net roundtrips to/from client
0  sorts (memory)
0  sorts (disk)
1  rows processed

Na consulta efetuada no 9i vemos um “access Full” na tabela dual, e nas estastisticas aparecem 3 “consistent gets” do qual os dba´s tentam se livrar utilizanos várias técnicas que agora com a versão 10g se tornaram dispensáveis. Na consulta realizada no 10g não há “consistent gets” e o custo é mais baixo.

Share

You may also like...

Deixe um comentário

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