Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Question Problema ZEOS

Boa tarde pessoal,

Não tem no Zeos algum recurso como o "FETCHROWS" ou "PACKETSIZE"???

Dei um "Select * from tabela", em uma tabla com cerca de 1.700.000 registros e demorou un tempo absurdo, além de travar a máquina...

Gracias,

WaRRant
Responder Con Cita
  #2  
Antiguo 23-03-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

No conozco las Zeos, pero me parece muy normal que tengas esos problemas con una cantidad tan grande de datos a copiar en memoria local. Por si no encuentras esas propiedades, siempre puedes recoger los datos en paquetes más pequeños, mediante consultas del tipo :

(primera consulta)

select TOP 1000 from Tabela

(consultas siguientes)

select TOP 1000 from Table where Codigo > :CodigoAnterior

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 23-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Realmente desconozco la respuesta exacta a tu pregunta. Sin embargo te comento que, como regla general las consultas SQL deben ser mucho más selectivas. Nadie quiere ni necesita ver un millón de registros. Las consultas deben planearse de tal suerte que regresen idealmente no más de 200 o 300 registros, ya en un caso extremo 1000 0 2000 registros. Más de eso va más allá de lo que un humano está dispuesto a recorrer- incluso cuando así lo crean.

Ahora bien, a falta de otra solución podrías mientras tanto usar la instrucción LIMIT para paginar los resultados:


Código:
SELECT * FROM tabla LIMIT :start, 100
Comienzas con start = 0 y conforme el suario pida más registros incrementas start en 100.

De esta manera visualizas virtualmente todos los registros, de 100 en 100. El usuario no tiene que esperar una tiempo absurdo y cuando se canse (que será por ahí de las 10 páginas) podrá cerrar la ventana y se acabó.

// Saludos
Responder Con Cita
  #4  
Antiguo 23-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Se me adelantó Marc y ya ves, la técnica es similar excepto que en MySql usas LIMIT en lugar de TOP.

// Saludos
Responder Con Cita
  #5  
Antiguo 23-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Caro amigos guillotmarc e Roman,

Primeiramente, gracias pela atenção,

Eu sei que não é preciso ver milhoes de registros, então eu fiz minha consulta da seguinte maneira:

"Select M.* from movvales M Where M.empresa = rEmpresa limit 0,20000"

OK?

Mas o problema é na hora de inserir datos...

Eu dou um "Query.insert" (so me serve deste modo), e como já tem os 20000 carregados na Query, nao é possível inserir mais nenhum registro... ele ate exibe na GRID, mas nao grava!

Como faço?

Gracias,

WaRRant
Responder Con Cita
  #6  
Antiguo 23-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por WaRRanT
Eu dou um "Query.insert" (so me serve deste modo), e como já tem os 20000 carregados na Query, nao é possível inserir mais nenhum registro... ele ate exibe na GRID, mas nao grava!
Acabo de probar y no me da problemas. ¿Tienes la propiedad RequestLive en true?

// Saludos
Responder Con Cita
  #7  
Antiguo 24-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Thumbs up

Roman,

Gracias! Houve um equivoco de minha parte...

So mais uma duvida...

Eu gostaria de ordenar meus registros por ordem de "data" (campo fecha). Eu achei que bastava indexar o campo e ele ordenaria...

Mas acabei tendo que usar um "ORDER BY", veja abaixo:

"Select M.* from movvales M Where M.empresa = rEmpresa ORDER BY data DESC limit 0,20000;"


Mas ficou bem mais lento...... lento.....
Responder Con Cita
  #8  
Antiguo 24-03-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 24
guillotmarc Va por buen camino
Hola.

Tienes que tener las dos cosas. El índice creado, y un order by en la consulta. (El ORDER BY indica que queremos un resultado ordenado, y el índice proporciona al servidor una forma rápida de calcular el orden).

NOTA : En algunos servidores, si quieres hacer una ordenación descendiente, tienes que crear un índice descendiente. No sé si también es el caso de MySQL.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #9  
Antiguo 24-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
De hecho no es necesario crear el índice para ordenar. La sentencia ORDER BY servirá para ordenar por cualquier campo o conjunto de campos. Sin embargo la existencia de índices hará que el ordenamiento sea mucho má rápido.

Por lo dicho antes, no es necesario un índice descendiente para ordenar en forma descendente.

// Saludos
Responder Con Cita
  #10  
Antiguo 24-03-2004
WaRRanT WaRRanT is offline
Miembro
 
Registrado: feb 2004
Posts: 33
Poder: 0
WaRRanT Va por buen camino
Thumbs up

guillotmarc e ROman,

OK!

Resolvido!


Mudando um pouco aqui o assunto, mas ainda com relação ao ZEOS...

Voces sabem como traduzir um "Key Violation" no ZEOS?

Gracias,

Abraços!
Responder Con Cita
  #11  
Antiguo 24-03-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por WaRRanT
Mudando um pouco aqui o assunto, mas ainda com relação ao ZEOS...
Lo siento, esta vez te toca "regaño"

Esta sería ya la tercera vez que cambias de tema en el mismo hilo. El que esté relacionado con Zeos no afecta ya que "Zeos" es algo muy general. Abre un hilo nuevo.

// Saludos

¡Ah! Y por favor escoge un título más indicativo del problema.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 23:28:01.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi