Indices no Firebird
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...,
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
Curtidas 0
Respostas
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.
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
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
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
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,
um grande abraço,
GOSTEI 0
Gandalf.nho
02/03/2005
Índices tb podem ser usados na cláusula ORDER BY
GOSTEI 0
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
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
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
Agradeço a todos pela ajuda,
um grande abraço
GOSTEI 0