Fórum Consulta Parcial #375108
21/09/2009
0
Pessoal, gostaria da ajuda de vocês para um dúvida minha.
Utilizo D7 + Zeos + MySQL.
Possuo uma tabela relativamente grande. O meu problema é que quando eu dou um SELECT * FROM clientes e dou um QryClientes.Open para ser listado num DBGrid, a consulta demora devido ao tamanho da tabela.
O que eu queria era por exemplo listar no DGGrid os 20 primeiros registros e conforme eu fosse baixando a barra lateral do DBGrid a consulta fosse completada com os registros seguintes.
Eu sei que poderia limitar no SELECT com a opção LIMIT. Porem, como faria para quando rolar o DBGrid para baixo os outros registros fossem aparecendo.
Agradeço quem puder ajudar.
Utilizo D7 + Zeos + MySQL.
Possuo uma tabela relativamente grande. O meu problema é que quando eu dou um SELECT * FROM clientes e dou um QryClientes.Open para ser listado num DBGrid, a consulta demora devido ao tamanho da tabela.
O que eu queria era por exemplo listar no DGGrid os 20 primeiros registros e conforme eu fosse baixando a barra lateral do DBGrid a consulta fosse completada com os registros seguintes.
Eu sei que poderia limitar no SELECT com a opção LIMIT. Porem, como faria para quando rolar o DBGrid para baixo os outros registros fossem aparecendo.
Agradeço quem puder ajudar.
Kuroski
Curtir tópico
+ 0
Responder
Posts
21/09/2009
Osocram
Amigo.
No ClientDataSet tem a propriedade PacketRecord veja se tem isso no Zeos.
Outro detalhe é que se não me engano isso so vai realmente funcionar se vc usar 3 camadas, então o resultado em relação a demora vai ser a mesma.
Pois com o DBExpress qdo se usa isso... vamos supor que o select retorne 1000 registros mas no packetRecord esteja 100. No servidor de aplicação onde esta o SqlQuery vai trazer os 1000, e no cliente vai trazer os primeiros 100. Isso quser dizer que se vc não usa 3 camadas (cliente/servidor no mesmo executavel) então vai demorar o mesmo tanto.
Pelo menos é assim que eu acho que funcione.
Vc pode dar uma olhada tbm nos indicies dessa tabela isso ajuda bastante.
flw.
No ClientDataSet tem a propriedade PacketRecord veja se tem isso no Zeos.
Outro detalhe é que se não me engano isso so vai realmente funcionar se vc usar 3 camadas, então o resultado em relação a demora vai ser a mesma.
Pois com o DBExpress qdo se usa isso... vamos supor que o select retorne 1000 registros mas no packetRecord esteja 100. No servidor de aplicação onde esta o SqlQuery vai trazer os 1000, e no cliente vai trazer os primeiros 100. Isso quser dizer que se vc não usa 3 camadas (cliente/servidor no mesmo executavel) então vai demorar o mesmo tanto.
Pelo menos é assim que eu acho que funcione.
Vc pode dar uma olhada tbm nos indicies dessa tabela isso ajuda bastante.
flw.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)