Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Estou utilizando um relacionamento Master-Detail de Vendas (Master) com Serviços e Pagamentos (tabelas Details), utilizo o TClientDataSet configurado para o commandType = ctQuery, tenho aproximadamente 20K de Vendas, sendo que cada Venda tem vários produtos e pagamentos.
Trabalho da seguinte forma: Eu tenho Querys prontas parametrizadas e apenas utilizo elas quando necessário, ex:
clientDataSet.close;
clientDataSet.commandText := FIND_BY_COD_VENDA;
clientDataSet.Params.paramByName('cod_venda').AsInteger := 134;
clientDataSet.open;
Ocorre que como estou trabalhando com Master-Detail, além de carregar os dados da VEnda, ele carrega os dados dos Serviços e Pagamentos, deixando a consulta um pouco mais lenta do que eu esperava. Gostaria de saber se tem como dizer de alguma forma: "Não carregue os details, apenas quando eu for editar um registro eu carrego os details".
Não utilizo o wildcard (*) em minhas consultas, pois preciso explicitamente dizer o nome das tabelas com join e cast. O banco que utilizo é o "Firebird", mas mudar de banco na atual não é uma opção, se não, já tinha mudado para Postgresql.
Como está o código da sua pesquisa? Ela abre só o dataset principal e ele por conta abre os demais? Que BD usa? Ele está corretamente indexado com os campos que utiliza na sua pesquisa? As vezes o problema nem é o Delphi, mas a falta de índices ou o uso incorreto dos índices do BD que torna a resposta mais lenta, sem contar que a tendência é que suas consultas em uma base que cresce exponencialmente com o tempo passem a crescer também... há casos inclusive em que se criar views para pesquisar os dados pode ajudar a melhorar a performance... cada caso é um caso....
Já tentou levar seu caso para a área referente ao seu BD para que os DBA's do fórum possam lhe auxiliar a analisar a estrutura da sua base de dados/selects de pesquisa e darem dicas pra melhorar a performance?
Ok, mas qual o banco de dados você esta utilizando?
Você usa asterisco em suas consultas?