Fórum Indices no Firebird #49672

02/03/2005

0

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

Responder

Posts

02/03/2005

Fsflorencio

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.


Responder

Gostei + 0

02/03/2005

Nandolh

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


Responder

Gostei + 0

02/03/2005

Eniorm

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,


Responder

Gostei + 0

02/03/2005

Gandalf.nho

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


Responder

Gostei + 0

02/03/2005

Eniorm

Í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@


Responder

Gostei + 0

02/03/2005

Gandalf.nho

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

SELECT * FROM tabela ORDER BY nome, sobrenome



Responder

Gostei + 0

02/03/2005

Eniorm

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


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar