Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   mejorar el tiempo de consulta (https://www.clubdelphi.com/foros/showthread.php?t=51590)

kourgan 20-12-2007 09:38:58

mejorar el tiempo de consulta
 
hola,
Estoy realizando un programa de gestion de una base de datos. Tengo una consulta que tarda demasiado en realizarse:
"Select distinct * from H, S, P, A, X where
P.codarea=A.codarea and
P.codsector=A.codsector and A.codsector=X.codsector and P.codproyecto=S.codproyecto and P.codproyecto=H.codproyecto and H.codproyecto=S.codproyecto AND
H.codsubpro=S.codsubpro AND
H.USUARIO = '" + frmEntrada->cmbNombrePersona->Text + "' AND
H.FECHA >= '" + fechaInferior + "' AND
H.FECHA <= '" + fechaSuperior + "' ORDER BY H.FECHA DESC";

He pensado en crear una tabla puente con las condiciones y luego usar esta nueva tabla para implementar las condiciones de mi consulta, pero la verdad es que no tengo muy claro como hacerlo. ¿Alguna sugerencia?

Gabo 20-12-2007 13:04:23

Hola kourgan,

¡¡¡¡bienvenido al foro!!!

Una primera sugerencia es que uses las etiquetas (en este caso las SQL) para que el código se vea más ordenado y sea más fácil de leer y entender. Sobre el uso de etiquetas te puedes informar aquí.

Otra cosa, te recomiendo que en vez de hacer todo esto:

Código:

from H, S, P, A, X where
P.codarea=A.codarea and
P.codsector=A.codsector and A.codsector=X.codsector and P.codproyecto=S.codproyecto and P.codproyecto=H.codproyecto and H.codproyecto=S.codproyecto AND
H.codsubpro=S.codsubpro AND

utilices JOIN. En el foro encontrarás mucha información sobre su uso.

Y lo último, ¿realmente necesitas obtener todos los campos (*)? Honestamente, no sé cuánto pueda tener que ver en la demora el DISTINCT *, pero me da por pensar que tienen mucho que ver también.


PS Sobre las etiquetas SQL, no las encontré yo tampoco, así que imagino que estarán temporalmente fuera de servicio. ;)

Gabo 20-12-2007 13:13:09

Por cierto, podrías indicar la estructura de las tablas, asi te podríamos ayudar mejor. Hay algo ahí que no veo claro...

fer21unmsm 20-12-2007 16:53:46

Hola también puedes crear indices, para agilizar el proceso

saludos cordiales.

jachguate 20-12-2007 22:44:12

Cita:

Empezado por Gabo (Mensaje 253690)
PS Sobre las etiquetas SQL, no las encontré yo tampoco, así que imagino que estarán temporalmente fuera de servicio.

si lo están, debido a que Emilio ha aplicado una actualización sobre el sistema de foros, y esas "personalizaciones" realizadas especialmente por y para el club llevan su tiempo.

Pronto tendremos de vuelta a [sql] y [delphi]

Hasta luego.

;)

kourgan 03-01-2008 11:36:22

Hola, gracias por vuestra ayuda.
Sobre lo de crear índices, ¿tendría que crear uno por cada tabla, verdad?¿que tipo de índices serían? Como tengo condiciones sobre varios campos de las tablas no lo tengo muy claro.


La franja horaria es GMT +2. Ahora son las 04:36:26.

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