[firebase-br] Modo que o DBExpress trata o sql

marlon david de souza marlon em sysmo.com.br
Qui Jun 30 10:47:46 -03 2005


> Em Qui 30 Jun 2005 13:36, Lucas Zampar escreveu:
> Sei que pode parecer meio off-topic, porém é uma dúvida relacionada ao
> Firebird e outros BD quando se usa a camada DBX no Delphi para acesso.
>
> Quando se ativa o TClientDataSet, é feito um fetch em toda tabelo do
> banco de dados, ou apenas nos registros que serão listados, e em um
> DBGRID como isso ficaria?
>
Depende. Se for usado um TSQLDataset a cada next é feito um fetch, ou seja, 
vem somente um registro. Caso for usado um TClientDataset, vai depender de 
como está a propriedade PackageRecord. Se estiver -1, vem tudo de uma vez, 
caso contrario, virá o numero de registros que voce informar.

> No momento em que é necessário realizar consultas, vocês usam o método
> "findkey / findnerearst" ou a escrevem com "where/order by", qual a
> vantagem de um pra outro?

É melhor usar o "where/order by", por que nesse caso o servidor enviará, já 
ordenado, somente os registros que voce precisa. Já se for usar o "findkey / 
findnerearst", voce terá que primeira baixar todos os registro para então 
usar estes comandos, o que é muito mais lento em bases grandes.

> Será que o DBX quando colocamos o campo de índice no "IndexFieldNames",
> envia para o firebird qual o indice correto para fazer a busca ou ele
> carregada todo banco na na memoria e ordena no cache? numa dessa pra que
> serviriam os indices no delphi com DBX?
>
Se for usado a propriedade "SortFieldNames" do componente TSQLDataset, será 
incluido automaticamente um "order by" no final da consulta SQL. Já se for 
usado o componente "TClienteDataset" a ordenação ocorre na máquina cliente.

> É normal com vocês, mesmo que uma tabela do FB tenha indices criados,
> eles não apareçam no "IndexFieldNames/IndexName" ?
>
O indice criado no DB é usado somente pelo próprio DB para pesquisar os dados 
mais rápidamente. Ou seja, quando o DB recebe uma solicitação qualquer 
(select, update, etc), ele irá usar os indices que estão disponiveis e que se 
aplicam a consulta. Já os indices criados na aplicação servem somente para 
ela em tempo de execução. Eles permitem que, uma vez que os dados já estejam 
na máquina cliente, estes possam ser ordenados de varias maneiras.
>
> Aproveitando o email gostaria de elogiar o Carlos H.  Cantu pelo
> excelente trabalho que ele fez no livro "FireBird Essencial", ficou
> fantástico. Virou meu guia de primeiros socorros. Apenas uma sugestão,
> porque não para um próximo livro abordar assuntos de acesso com Delphi e
> FB, porém indo mais à fundo que a maioria dos autores? por exemplo
> nessas dúvidas que eu postei acima? Já existir esse livro, gostaria de
> saber o nome...
>
>
> Atenciosamente,
>
>
> Lucas Zampar
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br Para
> consultar mensagens antigas: http://firebase.com.br/pesquisa

-- 
Sem mais,

----------------------
Marlon David de Souza
Desenvolvimento
Sysmo Informática Ltda




Mais detalhes sobre a lista de discussão lista