Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-04-2007
snowlis snowlis is offline
Miembro
 
Registrado: nov 2006
Posts: 30
Poder: 0
snowlis Va por buen camino
He probado a quitar el campo mo.desc y al ejecutar el programa en delphi ahora no me sale ningun error, pero cuando voy a ejecutar la consulta se queda como colgado y se me cuelga el ordenador.

Y si esa misma consulta la intento ejecutar en access quitando lo del mo.desc, me sale el mismo error : error de sintaxis (falta operador) en la expresión de consulta.

Las tablas sobre las que trabajo son archivos dbf que tengo todos en una misma carpeta dentro del programa y solamente uso un dataset, un query y un dbgrid para mostrar la consulta.

Lo único que se me ocurre es que sea normal que tarde tanto porque por ejemplo una consulta tan simple como esta :
SELECT M.NALBA,H.ALBA2 FROM MAEALBA M INNER JOIN HSTMOVI H ON M.OBRA=H.OBRA;

Con eso ya le cuesta un poco, casi 1 minuto, ya que estamos hablando con tablas con muchos registros (hstmovi tiene más de 76000 registros y maemovi más de 37000).

Puff, es que es tal la lentitud que en delphi una consulta como esa se me cuelga el pc, en access por lo menos le cuesta pero la ejecuta.

Última edición por snowlis fecha: 19-04-2007 a las 18:37:07.
Responder Con Cita
  #2  
Antiguo 19-04-2007
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
parentesis?

aunque hace rato que no trabajo en access, creo que necesita parentesis en los join, quedaria asi:
le saque el campo DESC porque tambien creo que te traera problemas...

Código SQL [-]
 
SELECT M.NALBA,M.OBRA,M.FECHA,M.ORIGI,H.ALBA2
, MO.NOME,MO.CLIE,L.PARTE,L.TIPO,L.HORA1 
FROM (((MAEALBA M 
INNER JOIN LINPRTS L ON L.NALBA=M.NALBA)
INNER JOIN MAEOBRA MO ON MO.OBRA=L.OBRA)
INNER JOIN HSTMOVI H ON H.OBRA=MO.OBRA)
WHERE L.TIPO='E' AND M.FECHA > '9/30/2005';

tambien puedes probar sin los INNER JOIN

Código SQL [-]
 
SELECT M.NALBA,M.OBRA,M.FECHA,M.ORIGI,H.ALBA2
, MO.NOME,MO.CLIE,L.PARTE,L.TIPO,L.HORA1 
FROM MAEALBA M, LINPRTS L,  MAEOBRA MO, HSTMOVI H
WHERE M.FECHA > '9/30/2005'
AND L.NALBA=M.NALBA AND L.TIPO='E'
AND MO.OBRA=L.OBRA
AND H.OBRA=MO.OBRA


Espero que te sea de ayuda...
Saludos
Responder Con Cita
  #3  
Antiguo 19-04-2007
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
Lentitud

En cuanto a la lentitud...
Todas las tablas tienen indices por los campos intervinientes en los join?
Responder Con Cita
  #4  
Antiguo 19-04-2007
snowlis snowlis is offline
Miembro
 
Registrado: nov 2006
Posts: 30
Poder: 0
snowlis Va por buen camino
Gracias Hach por las consultas, las probaré

En cuanto a los indices no los tengo, solo tengo en la carpeta los archivos de delphi y los DBF.

Creo que también tenía los indices NT1,NT2 y NT3 pero los borré porque me di cuenta que el delphi se los pasaba por el forro y creo que no servía para nada, pero igual me equivoco. Si se los pongo, las consultas iran más rápidas o en que influye tener los indices o no ?
Responder Con Cita
  #5  
Antiguo 19-04-2007
hach hach is offline
Miembro
 
Registrado: mar 2007
Ubicación: Bariloche, Argentina
Posts: 44
Poder: 0
hach Va por buen camino
Indices

los indices son indispensables!!!!
estas andando en auto con el freno de mano puesto!!! je

para esta consulta en particular necesitas tener los siguientes indices

SELECT M.NALBA,M.OBRA,M.FECHA,M.ORIGI,H.ALBA2
, MO.NOME,MO.CLIE,L.PARTE,L.TIPO,L.HORA1
FROM MAEALBA M, LINPRTS L, MAEOBRA MO, HSTMOVI H
WHERE M.FECHA > '9/30/2005'
AND L.NALBA=M.NALBA AND L.TIPO='E'
AND MO.OBRA=L.OBRA
AND H.OBRA=MO.OBRA

MAEALBA : fecha, nalba
LINPRTS : nalba, tipo, obra
MAEOBRA : obra
HSTMOVI : obra

esto es lo ideal, veras la diferencia de velocidad
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error al ejecutar consulta mierda SQL 1 11-03-2007 22:06:36
Error al Ejecutar consulta de Eliminacion JoanKa Varios 2 02-01-2007 16:10:53
Ejecutar una consulta de Access Leviatan Conexión con bases de datos 2 17-10-2006 10:08:37
ejecutar consulta de access juanmdq Tablas planas 2 07-01-2005 13:59:19
ADO: Error al ejecutar una consulta repetidamente sostro Conexión con bases de datos 6 31-08-2004 17:43:50


La franja horaria es GMT +2. Ahora son las 22:23:57.


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