| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2003 00:02:17
|
Rafael Afonso
Virtual Machine Man
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline
|
Olá:
Estive dando uma olhada na API da java.sql.ResultSet e reparei que não há nenhum método que retorna o tamanho desta, ou seja, quantas linhas obtive da query. Obviamente posso correr por todo o ResultSet até o final com um contador e depois contar quantas linhas obtive. Creio que ficaria assim:
Mas como determinar a priori? Será que isso depende da implementação de cada driver?
Grato,
|
Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2003 09:27:27
|
cv
Moderador
![[Avatar]](/images/avatar/210f760a89db30aa72ca258a3483cc7f.jpg)
Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline
|
Rafael Afonso wrote:Será que isso depende da implementação de cada driver?
Acertou
Alguns bancos não tem como saber o número de registros retornados em um ResultSet devido a otimizacoes feitas no driver (é meio 'caro' saber o tamanho de um ResultSet às vezes). Mas, se vc está iterando sobre o ResultSet de alguma maneira, aproveite pra usar um contador, ou então faça dois SELECTs, um pra pegar os dados e outro com um count().
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2003 09:52:35
|
Rafael Steil
Administrador
![[Avatar]](/images/avatar/8e296a067a37563370ded05f5a3bf3ec.jpg)
Membro desde: 31/08/2002 02:35:53
Mensagens: 5984
Localização: São Paulo
Offline
|
Eu tava fazendo uns testes com isso esses tempos, e
foi um pouco mais rapido que o loop while().
Rafael
|
"working code attracts people who want to code. Design documents attract people who want to talk about coding - Charles Miller"
http://rafaelsteil.com
http://twitter.com/rafaelsteil
http://www.jforum.net
http://www.flickr.com/photos/rafaelsteil |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2003 10:49:16
|
Rafael Afonso
Virtual Machine Man
Membro desde: 05/12/2002 16:03:43
Mensagens: 719
Localização: São Paulo/SP
Offline
|
Rafael Steil wrote:
Eu tava fazendo uns testes com isso esses tempos, e
foi um pouco mais rapido que o loop while().
Rafael
E aí não precisa fazer duas queries: uma com o count(*) e outra para obter as linhas.
|
Rafael Ubiratam Clemente Afonso
---------------------------------------
GitHub
ScalaFX
LinkedIn |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 17/05/2003 15:51:57
|
CLAUDIO GUALBERTO
JavaGuru
Membro desde: 29/09/2002 00:22:27
Mensagens: 217
Localização: Uberlândia-MG
Offline
|
É... mas para isso funcionar vc deve usar um Statement rolável
o q é muito caro em termos de instanciação.
Sei que existem situações onde queremos saber o tamanho do ResultSet, mas no mundo real o que se faz é popular um ArrayList com as linhas, e como na maioria das vezes nós adicionamos TODAS as linhas do ResultSet, basta usar o metodo size após popular o ArrayList.
Parece meio bobo, mas faz uma boa diferença entre Statement's simples e Statement roláveis no quisito desempenho e uso de recursos.
É claro que usando ou não Statement's simples vc irá popular o ArrayList, entaum por que gastar duas vezes não é mesmo !!
Claudio Gualberto.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 16/04/2010 14:53:29
|
Mikhas
Virtual Machine Man
![[Avatar]](/images/avatar/4388a23da67b154b780b78dd7ea4636e.jpg)
Membro desde: 17/06/2008 11:10:50
Mensagens: 677
Localização: São Paulo
Offline
|
Bem... eu tenho um caso onde recupero o resultado de uma stored procedure e gero um CSV.
Na primeita linha do meu CSV, eu preciso colocar o tamanho do arquivo, quantos registros a SP me retornou.
Não seria um problema jogar tudo em uma lista e depois pegar o tamanho da lista... o problema é que a SP me retorna cerca de 60000 linhas!!! e para optimizar a performance, escrevo o CSV direto com o resultado da stored procedure devidamente formatada.
|
Refractor 1.6 - Easy reflection framework
Agora muito mais rapido!
Raze - The fastest CSS selector engine
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/05/2012 18:18:45
|
hugoschm
Smalltalk
Membro desde: 22/05/2012 18:16:22
Mensagens: 1
Offline
|
Para a posteridade: creio que a forma certa de resolver isto seria contar o número de resultados no banco de dados (com os devidos indexes para tabelas grandes).
Por exemplo, no Postgresql você faria:
SELECT COUNT(*) as rowCount FROM users WHERE age > 21;
|
|
|
 |
|
|