Pregunta: | 60812 - CONSULTAS LENTAS |
Autor: | Gabriela |
Hola a todos, espero que alguien me pueda ayudar con esto. Tengo mi sistema con sus reportes y consultas para mostrar por pantalla, realizados usando vistas locales o consultas select - sql into cursor. hasta hace un tiempo todo bien, pero mis tablas ya tienen alrededor de 600.000 registros y las consultas son LENTISIMAS.....Probe con un formularia cambiar por seek, found(), do while, etc y cambió notablemente la rapidez, pero eso significaría un trabajo enorme de cambiar codigo y crear cantidad de indices. Justamente yo use vista u consultas por que tenía entendido que era lo mas rápido.
Mando un ejemplo para ver si alguien me puede ayudar a ver si estoy cometiendo algun error o hay alguna forma de optimizar este procedimiento *hago consulta de entradas menos salidas del dia que estoy consultando SELECT mov_stock.fecha_mov, mov_stock.id_proveed, mov_stock.cod_art,; SUM(mov_stock.entrada_u - mov_stock.salida_u) AS EXISTE,; SUM(mov_stock.entrada_k-mov_stock.salida_k) AS EXISTE_k; FROM gestion!mov_stock ; LEFT OUTER JOIN gestion!comprob ON mov_stock.cod_cpte = comprob.cod_cpte ; WHERE Comprob.mov_stock = 1 ; AND Comprob.afecta_ex = 1; and mov_stock.id_proveed =mprovee; AND mov_stock.fecha_mov =mFdesde ; group by mov_stock.cod_art INTO CURSOR cierre Agradeceré cualquier sugerencia o ayuda URGENTE!!!! |
Respuesta: | Javier Caballero |
Gabriela, consulta: vos estas trabajando con dbf o algun motor de base de datos?
En ambos casos las vistas locales o remotas son lentas a partir de los 50mil registros +-. Mi recomendacion es que utilices sentencias sql. Y si estas usando dbf, ya tendrias que ir pensando en migrar a algun motor de base de datos. Espero tus comentarios para buscar una solucion a tu problema. Saludos |
Respuesta: | Gabriela Gonzalez |
Gracias por responderme. En efecto estoy usando dbf, o sea la base propia de visual 7.0 que es la versión que utilizo. Por ahora lo que estoy haciendo es usar consultas solo para aquellos casos que utiliza pocas relaciones y filtros. Después estoy cambiando por los casicos seek, found(), do while, etc. De esta manera se han super agilizado los resultados de los informes. No se a que te referis con usar sentencias sql. Acaso el ejemplo de la consulta que puse en la pregunta no es una sentencia sql?
Saludos Gracias |