melhor maneira de retornar a quantidade de registros
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
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
Curtidas 0
Respostas
Andremuller
06/05/2005
não daria pra simplismete executar o método RecordCount do seu DataSet?
GOSTEI 0
Steve_narancic
06/05/2005
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
GOSTEI 0
Andremuller
06/05/2005
em qual classe de componente você está carregando o resultado dessa consulta?
GOSTEI 0
Steve_narancic
06/05/2005
IBDataset
GOSTEI 0
Andremuller
06/05/2005
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?
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?
GOSTEI 0
Yallebr
06/05/2005
Na minha opniao vc poderia fazer um método com apenas o codigo.
É mais leve, pois vc busca apenas o resultado da chave.
Select Count(Chave) as Total from Tabela.
É mais leve, pois vc busca apenas o resultado da chave.
GOSTEI 0
Steve_narancic
06/05/2005
e se eu estiver filtrando a tabela
select * from clientes where NOME = ´JOAO´
select * from clientes where NOME = ´JOAO´
GOSTEI 0
Andremuller
06/05/2005
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)
2)
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.
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.
GOSTEI 0
Gandalf.nho
06/05/2005
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.
GOSTEI 0
M4xell
06/05/2005
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....
GOSTEI 0
Yallebr
06/05/2005
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.
GOSTEI 0