Indices no Firebird

Firebird

02/03/2005

Pessoal, criei uma tabela onde tem o campo codigo que é integer not null primary key, mas estive pensando em criar indices para os campos nome e sobrenome para agilizar na hora de executar os selects, mas de indices não entendo bulhufas.

Será que alguem pode me dar uma luz de como trabalhar com indices e obter um melhor resultado na hora dos select´s?

Um abração...,


Eniorm

Eniorm

Curtidas 0

Respostas

Fsflorencio

Fsflorencio

02/03/2005

Ao criar índices, o firebird (na maioria das vezes) deve utilizá-los automaticamente quando ele achar necessário, mas às vezes ele não utiliza o melhor índice então você deverá informar qual índice ele deve usar.

De qualquer forma não é legal sair criando índices pra todos os campos, pois eles ocupam espaço e o que deve ser feito é um estudo de quais índices seriam realmente necessários.

Acesse o site www.firebase.com.br e veja na página dos artigos algumas matérias sobre índices como:
-Entendendo as estruturas BTree
-Índices, Performance e Estatísticas no IB
-PLANos de optimização do Firebird/Interbase

Boa sorte.


GOSTEI 0
Nandolh

Nandolh

02/03/2005

Olá

O índice somente é necessário quando vc o utiliza na clausula Where.
Ex.: TABELA1(cod,nome)

SELECT * FROM TABELA1 WHERE NOME LIKE ´JOAO¬´
Criar um índice para nome é viável.

Supondo o seguinte:
SELECT MAX(COD) FROM TABELA1
Se TABELA1 tiver muitos registros então crie um índice decrescente pada COD. Assim o MAX será quase que instantâneo...

O mesmo acontece com MIN, só que desta vez vc cria um crescente.

Para vc observar a diferença seria muito interessante que tivesse alguma ferramenta para observar o número de leituras que o seu select gera, PLAN ANALYZER. Um ótimo exemplo é o IBEXPERT(pena que só pagando vc tem esta opção).

[]´s


GOSTEI 0
Eniorm

Eniorm

02/03/2005

Pessoal, agradeço pela ajuda, vou criar os indices apenas para os campos nome e sobrenome, pois as buscas serão apenas por esses dados.

um grande abraço,


GOSTEI 0
Gandalf.nho

Gandalf.nho

02/03/2005

Índices tb podem ser usados na cláusula ORDER BY


GOSTEI 0
Eniorm

Eniorm

02/03/2005

Índices tb podem ser usados na cláusula ORDER BY


Vc poderia me dar um exemplo, por favor, supondo a tabela

codigo integer not null primary key
nome varchar(100),
sobrenome varchar(100)

tento como indices:
idx_nome
idx_sobrenome

como montaria o Select ?

um abração galer@


GOSTEI 0
Gandalf.nho

Gandalf.nho

02/03/2005

Um SELECT simples mostrando todos os campos e ordenando pelo nome e sobrenome

SELECT * FROM tabela ORDER BY nome, sobrenome



GOSTEI 0
Eniorm

Eniorm

02/03/2005

Ok entendi, então como no bd já existe os indices respectivamente associados com os campos, basta efetuar o select e ordenar que os indices entram em ação, correto.

Agradeço a todos pela ajuda,
um grande abraço


GOSTEI 0
POSTAR