Fórum Indices para melhorar performance do banco? #229438
03/05/2004
0
Sei que para melhor a performance das tabelas é só criar um idice do campo relacionado a sua persquisa, mas, nao sabia que para campos chave primaria também é necessario criar também, alguem pode me explicar mais detalhado este motivo?
Obrigado!
Obrigado!
Baliza
Curtir tópico
+ 0
Responder
Posts
03/05/2004
Wtjunior
Indíces são estruturas que permitem uma recuperação rápida de dados. Colunas simples ou grupos de colunas podem ser indexadas.
Os índices aceleram consultas quando cerca de 10¬ a 15¬ da tabela estiver sendo recuperada. Para recuperações maiores, inserções de dados e atualizações de campos que fazem parte de índices, os índices tornam a resposta mais lenta.
A organização das colunas também afeta sua eficiência. As consultas que tiverem os campos que compõem o índice, ou os primeiros campos do mesmo, em sua cláusula WHERE estarão utilizando o índice.
Um índice pode conter até 16 colunas (Oracle), ou seja, a ordem de uma chave concatenada é importante, pois somente consultas que acessam colunas nessa ordem utilizarão o índice. Por exemplo, se o índice
for composto pelas colunas 1,2,3, somente as consultas que acessas as colunas 1,2,3 ou 1 e 2 ou 1 utilizarãoo índice.
CREATE INDEX nome_do_indice ON nome_da_tabela
(nome_da_coluna ASC/DESC, [nome_da_coluna........]);
CREATE INDEX IND_FONE ON CLIENTE
(nr_fone);
O índice não pode ser modificado, para modificá-lo é necessário excluí-lo e recriá-lo
DROP INDEX nome_do_indice;
um abraço
Wilson
Os índices aceleram consultas quando cerca de 10¬ a 15¬ da tabela estiver sendo recuperada. Para recuperações maiores, inserções de dados e atualizações de campos que fazem parte de índices, os índices tornam a resposta mais lenta.
A organização das colunas também afeta sua eficiência. As consultas que tiverem os campos que compõem o índice, ou os primeiros campos do mesmo, em sua cláusula WHERE estarão utilizando o índice.
Um índice pode conter até 16 colunas (Oracle), ou seja, a ordem de uma chave concatenada é importante, pois somente consultas que acessam colunas nessa ordem utilizarão o índice. Por exemplo, se o índice
for composto pelas colunas 1,2,3, somente as consultas que acessas as colunas 1,2,3 ou 1 e 2 ou 1 utilizarãoo índice.
CREATE INDEX nome_do_indice ON nome_da_tabela
(nome_da_coluna ASC/DESC, [nome_da_coluna........]);
CREATE INDEX IND_FONE ON CLIENTE
(nr_fone);
O índice não pode ser modificado, para modificá-lo é necessário excluí-lo e recriá-lo
DROP INDEX nome_do_indice;
um abraço
Wilson
Responder
Gostei + 0
03/05/2004
Wagnerpb
A forma como vc cria o SQL tb influencia na performance, letras maiúscula e MINÚSCULAS :D são interpretadas de forma diferente pelo banco, sendo assim ´SELECT * FROM TABLE´ é diferente de ´select * from table´, a forma como vc monta o WHERE tb é importante SEMPRE DO MAIOR NÚMERO DE REGISTROS PARA O MENOR, outra coisa, dependendo da tabela, é mais vantajoso que ela não tenha índice, em uma tabela de cargos com +ou- 100regs, criar um índice estaria forçando o banco a trabalhar por uma coisa que ele já sabe, em uma tabela pequena NÃO É VANTAGEM ele usar índice, mas como o índice existe o BD acaba tendo q fazer os cálculos para chegar a essa conclusão.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)