Indices banco de dados

Boa tarde pessoal, tenho um trabalho de faculdade que consiste em criar indices para meu modelo de dados, ORACLE, porém pede para criar os melhores tipos para cada caso, quais seriam esses tipos? (ORACLE) gostaria de algum material.

Mais uma dúvida, digamos que eu faça o seguinte select : SELECT NOME_CLIENTE FROM CLIENTE; Nesse select a criação de um indice adiantaria alguma coisa? ou funcionam apenas no WHERE os indices.

grato.

[quote=Java_Terminator]Boa tarde pessoal, tenho um trabalho de faculdade que consiste em criar indices para meu modelo de dados, ORACLE, porém pede para criar os melhores tipos para cada caso, quais seriam esses tipos? (ORACLE) gostaria de algum material.

Mais uma dúvida, digamos que eu faça o seguinte select : SELECT NOME_CLIENTE FROM CLIENTE; Nesse select a criação de um indice adiantaria alguma coisa? ou funcionam apenas no WHERE os indices.

grato.[/quote]

a) http://docs.oracle.com/cd/B28359_01/server.111/b28318/datatype.htm
b) SELECT NOME_CLIENTE FROM CLIENTE vai varrer a tabela inteira, obviamente índices não serão necessários nesse caso.
SELECT NOME_CLIENTE FROM CLIENTE WHERE NOME_CLIENTE < “JO” - um índice por NOME_CLIENTE ajuda.
SELECT NOME_CLIENTE FROM CLIENTE WHERE NOME_CLIENTE = “JOSE DE ARIMATEIA” - um índice por NOME_CLIENTE ajuda.
SELECT NOME_CLIENTE FROM CLIENTE WHERE NOME_CLIENTE LIKE “JO%” - se houver um índice por NOME_CLIENTE ajuda porque o LIKE, NESTE CASO (onde há um “%” apenas no fim, não no começo) , será transformado em algo como:
SELECT NOME_CLIENTE FROM CLIENTE WHERE NOME_CLIENTE BETWEEN “JN” AND “JP” (não é exatamente isso, mas é quase).
SELECT NOME_CLIENTE FROM CLIENTE WHERE NOME_CLIENTE LIKE “%JO%” - não será beneficiado por um índice. Ele tem de varrer a tabela inteira.
SELECT NOME_CLIENTE FROM CLIENTE WHERE CODIGO = 1000 - um índice por CODIGO ajuda. Um índice por NOME_CLIENTE não ajuda.

É cara, até onde sei indice é pelo que está depois do where mesmo.