Fórum melhor maneira de retornar a quantidade de registros #280485

06/05/2005

0

Saudações,


Qual seria a melhor maneira de retornar a quantidade de registros encontrados em um select sem prejudicar muito a performance. Havia pensado em criar uma thread só para isso, seria viavel?

Alguma sugestão?


Steve Narancic


Steve_narancic

Steve_narancic

Responder

Posts

06/05/2005

Andremuller

não daria pra simplismete executar o método RecordCount do seu DataSet?


Responder

Gostei + 0

06/05/2005

Steve_narancic

mas para que retorne todos os registros tenho que usar fetchall e depois recordcount , sendo que o fetchall faz com que haja uma queda de performance com tabelas com muitos registros


Responder

Gostei + 0

06/05/2005

Andremuller

em qual classe de componente você está carregando o resultado dessa consulta?


Responder

Gostei + 0

06/05/2005

Steve_narancic

IBDataset


Responder

Gostei + 0

06/05/2005

Andremuller

Então qual seria o problema de você ver o número de registros através de IBDataSet.RecordCount?

Tem alguns componentes que realmente são ruins nesse método, por exemplo TSQLQuery e TSQLDataSet que reconsultam o banco
trocando o fields por count(*).

Só que o IBDataSet já faz o controle do RecordCount automaticamente, mesmo que você não o acesse, então não haveria perda de performance por buscar seu valor.

É isso?


Responder

Gostei + 0

06/05/2005

Yallebr

Na minha opniao vc poderia fazer um método com apenas o codigo.

Select Count(Chave) as Total from Tabela.


É mais leve, pois vc busca apenas o resultado da chave.


Responder

Gostei + 0

06/05/2005

Steve_narancic

e se eu estiver filtrando a tabela

select * from clientes where NOME = ´JOAO´


Responder

Gostei + 0

06/05/2005

Andremuller

acho que a sua dúvida não está bem descrita

o que tu quer fazer?
1) Contar o número de Joãos?
2) Trazer os dados de todos os Joãos e também saber quantos você trouxe?

respostas

1)

select count(*) from clientes where NOME = ´JOAO´


2)

select * from clientes where NOME = ´JOAO´


e depois IBDataSet.RecordCount para ver quantos registros vieram.
Nesse caso, não reconsulte select count(*) from clientes where NOME = ´JOAO´ porque a manutenção da propriedade FRecordCount é feita de qualquer forma.


Responder

Gostei + 0

06/05/2005

Gandalf.nho

e se eu estiver filtrando a tabela select * from clientes where NOME = ´JOAO´


select COUNT(*) from clientes where NOME = ´JOAO´

Para usar RecordCount com IBDataset é necessário um FetchAll para trazer o resultado correto, o que não é bom em tabelas muito grandes.


Responder

Gostei + 0

06/05/2005

M4xell

Tipo, seria viável criar um Thread e fazer o seu Select e depois o RecordCount + o FetchAll pois ele estaria enviando duas requisições para o servidor, não sei se isso faria alguma diferença de performance.... tem que para e analisar, testar com a Thread e sem a Thread....


Responder

Gostei + 0

06/05/2005

Yallebr

e se eu estiver filtrando a tabela
select * from clientes where NOME = ´JOAO´


Ai vc pode usar o RecordCOunt mesmo, pois não devem existir ´tantos João´ no seu banco de dados. Assim vc faz seu SQL e depois apenas da um RecordCount.

Mas o melhor é o q gandalf.nho falou. Já busca com o count.


Responder

Gostei + 0

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

Aceitar