Fórum Dúvida de Índice FB #54075

05/12/2005

0

Olá Pessoal,

Venho estudando o FB a tempos e estou num grande projeto com ele e estou totalmente satisfeito (usando Triggers, Storeds Procedures, Views, Generator.. tudo que posso tirar dele!).

Em meus estudos lembor que li algo sobre indices, nao lembro onde, e dizia o seguinte:

Se temos uma tabela CLIENTE e temos o campo SEXO onde ele pode receber ´F´ ou ´M´. Digamos que no sistema tenha muito acesso a este campo então por lógica eu criaria um índice para agilizar as pesquisar. Porém li (queria lembrar onde!) que como este campo não tem muitos conteúdos diferentes se criar um índice a pesquisar seria mais lenta que sem índice. Isto é verdade?

Outra dúvida é quanto a índices compostos, digamos que tenho a tabela ITENS DE NOTA FISCAL onde ela tem os campos EMPRESA, PEDIDO e ITEM. O mais coerente seria criar um índice composto pelos 3 campos porém no documento dizia que eu poderia criar um índice para cada campo que funcionaria exatamente na mesma velocidade uma busca nesta tabela.

Fora isso digo que o FireBird é um banco de dados excelente que está superando muito minhas expectativas!

Abraços!

Romulo Oliveira
Macaé/RJ


Romulocpd

Romulocpd

Responder

Posts

05/12/2005

Thomaz_prg

Com relação ao índice do primeiro campo, creio eu que realmente, por ter apenas 2 valores diferentes, não terá ganho de performance (a menos que se esteja usando como pesquisa e com outros campos, por exemplo where salario > 1000 and sexo = ´F´), mas creio que usando indice também não se terá queda não.

Já com relação ao segundo, creio eu que o melhor, seria um índice para cada campo, assim, se você tiver que utilizar uma pesquisa simples (com apenas 1 desses campos), o índice já irá existir... e apenas lembrando que se os laços são feitos usando PK´s, não precisa se preocupar em criar os índices...

Fica aí minha opinião.


Responder

Gostei + 0

05/12/2005

Romulocpd

Olá Thomaz,

Obrigado por sua opinião.

Então me aconselhe no segundo caso:

Por exemplo, vou ter consultas que deverão agrupar o Total de um Pedido de Compra se baseando nos campos Quantidade e Valor, a soma dos Dois.

Ex: SELECT SUM(QTD * VALOR) FROM ITENSPEDIDOCOMPRA WHERE ITE_PEDIDO = 1 AND ITE_EMPRESA = 1.

Neste caso, para totalizar o total do pedido, um índice correto e coerente seria 1 Indice para QTD e outro para VAlor, certo?

Só gostaria de entender porque em outros bancos de dados o ideal seria criar um índice composto pelos 2 campos e no FireBird ele você pode criar índices separados para cada campo.

Abraços!

Romulo Oliveira
Macaé/RJ


Responder

Gostei + 0

05/12/2005

Gandalf.nho

Dê uma olhada nesse artigo que explica as diferenças entre os índices no IB/FB e em outros SGBD [url]http://www.firebase.com.br/cgi-bin/firebase.cgi/artigo?ID=1232[/url]


Responder

Gostei + 0

05/12/2005

Afarias

|Neste caso, para totalizar o total do pedido, um índice correto e coerente
|seria 1 Indice para QTD e outro para VAlor, certo?

Errado. Vc tem q criar índices para os campos no WHERE, ou seja: ITE_PEDIDO e ITE_EMPRESA.


|Só gostaria de entender porque em outros bancos de dados o ideal seria
|criar um índice composto pelos 2 campos e no FireBird ...

Que bancos de dados por exemplo? No mais... cada SGBD tem um sistema prórprio de implementação de índices, sendo assim cada um tem suas particularidades, e é importante conhecê-las.


T+


Responder

Gostei + 0

06/12/2005

Romulocpd

Olá Afarias,

Obrigado pela informação, acabei confundindo e achei que deveria criar estes índices. Na verdade nem vou criar os indices pois já são parte da Chave Primária então não há necessidade.

Vlw


Responder

Gostei + 0

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

Aceitar