FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Ayuda con consulta SQL
Que tal a todos,
Hice una consulta en SQL que con pocos registros funcionaba muy bien pero ahora se tarda hasta 30 minutos en procesar. Utilizo Interbase 6.5 y el programa esta hecho en C++ Builder 6. Si alguien me puede ayudar a optimizar la consulta se los agradecería. La consulta es la siguiente: La base de datos al dia de hoy mide unos 50 Mb SELECT Codigo,Precio,Cantidad FROM Ventas_Conceptos WHERE Venta_key IN ( SELECT Venta_key FROM Ventas WHERE Corte=50 AND Cancelada IS NULL) Es una consulta sencilla salvo el hecho de que tiene un IN y una subconsulta. |
#2
|
||||
|
||||
Cita:
Bienvenido al Club Delphi, te has dado un garbeo por la Guía de estilo El problema de tu SQL puede estar en los Indices, no veo nada fuera de lo normal. Los indices de Venta_key de ambas base de datos están creados?, quizás puede ser el problema de la lentitud o que la base de datos esta corructa. Un saludo.
__________________
Al hacer una consulta SQL, haz que los demás te entiendan y disfruten de ella, será tú reflejo de tú saber. |
#3
|
||||
|
||||
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo?, gracias por tu colaboración
Recuerda poner los tags al código fuente, ejemplo: Gracias Además de lo dicho por olbeup, deberías mostrarnos la estructura de esas tablas, explicar su relación, etc. ya que no somos adivinos Esa consulta quizás sea fácilmente hacerla de otra forma más eficiente, pero si no conocemos la estructura y relación... poco podemos hacer, salvo aventurar soluciones. |
#4
|
|||
|
|||
Disculpen por el formato
Gracias por su ayuda, no había visto donde estaba la guía de estilo, trate de explicarme lo mejor posible, la estructura de las tablas mas o menos es la siguiente:
VENTAS Venta_key int Total int Cancelada boolean Corte int VENTAS_CONCEPTOS Venta_key int Cantidad int Codigo String Precio float La idea general de la consulta es seleccionar todos los "Conceptos de venta" de un Corte en especial en el caso del ejemplo el corte 50 y que a su vez estas ventas no estén canceladas. Para una idea de la cantidad de "Conceptos de venta" la instruccion:
Da como resultado 554 Registros, no comprendo porque la primera instruccion tarda tanto tiempo en ejecutarse, también es importante mencionar que tengo muchas otras consultas que funcionan de manera apropiada. |
#5
|
|||
|
|||
Indices
Gracias olbeup:
En cuanto a los indices las tablas tienen la sig estructura:
Supongo que el indice de la tabla de "Ventas" es creado automáticamente con el Primary key, en cuanto a la tabla de ventas_conceptos el campo de venta_key puede repetirse "N" cantidad de veces. Gracias. |
#6
|
|||
|
|||
Hola
los in no los utilizo nunca a no ser para una subconsulta que devuelva muy pocos valores Debes tener pk en la tabla ventas campo venta_key y un fk del campo venta_key de ventas_conceptos contra ventas en cuanto al pk de ventas_conceptos nos cual debe ser (lo debes ver tu) ej venta_key+codigo o bien un campo nuevo ID
Saludos |
#7
|
|||
|
|||
Cita:
|
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Ayuda con una consulta!!! | sargento elias | SQL | 2 | 12-03-2009 13:10:49 |
Ayuda con consulta... | Jose Roman | SQL | 2 | 03-02-2009 10:36:56 |
Ayuda con una consulta plz ! | K4RL0S | SQL | 9 | 17-11-2005 17:33:09 |
Ayuda con una consulta | Nomack | SQL | 8 | 03-09-2005 21:24:37 |
Ayuda con consulta | JorgeBec | SQL | 7 | 21-10-2003 20:25:16 |
|