Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
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 08-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
¿ Estás seguro de eso ?

Una cosa es que cuando ejecutes el procedimiento almacenado, tarde 3 segundos en empezar a mostrarte registros, y otra cosa es que tarde 3 segundos en calcular toda la consulta.

Ejecuta el procedimiento original. Cuando en IB-Expert te empieze a mostrar registros, dale a Ctrl-Fin para indicarle que quieres ir al último. Cuenta el tiempo que tarda en saltar al último registro (es el tiempo que necesita para calcular todos los registros).

Seguro que te tiene que tardar aprox. 3 min. 50 seg., al igual que el procedimiento modificado.

Optimiza de verdad las consultas involucradas dentro del procedimiento almacenado. Para ello, consulta el plan de ejecución de esas consultas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #2  
Antiguo 08-06-2004
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 26
guillotmarc Va por buen camino
Por cierto, aún no has dicho cuantos registros tienen las tablas PRODUCTO y SERIE_PRODUCTOS.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #3  
Antiguo 08-06-2004
Sudamericano Sudamericano is offline
Miembro
 
Registrado: feb 2004
Posts: 41
Poder: 0
Sudamericano Va por buen camino
Ups obvie ese pequeño detalle la de productos tiene aprox 8,000 registros y la de serieproductos aprox 300,000
Responder Con Cita
  #4  
Antiguo 09-06-2004
cahp cahp is offline
Miembro
 
Registrado: may 2003
Ubicación: Alicante
Posts: 90
Poder: 24
cahp Va por buen camino
prueba asi, creo que aprovecharas mejor los indices

Código SQL [-]
CREATE PROCEDURE STOCK_VS_SERIE 
returns (PRODUCTO        VARCHAR(25),
     NOMBRE_PRODUCTO VARCHAR(150),
     STOCK_FISICO    DOUBLE PRECISION,
     NRO_SERIES      INTEGER,
     DIFERENCIA      INTEGER)
AS 

begin
FOR
  SELECT COUNT(CODIGO_SERIE), CODIGO_PRODUCTO
  FROM SERIE_PRODUCTO
  GROUP BY CODIGO_PRODUCTO
  INTO :NRO_SERIES, :PRODUCTO
DO
BEGIN
     SELECT NOMBRE_PRODUCTO, STOCK_FISICO
     FROM PRODUCTO
     WHERE CODIGO_PRODUCTO = :PRODUCTO
     INTO :NOMBRE_PRODUCTO, :STOCK_FISICO;
     
     DIFERENCIA = STOCK_FISICO - NRO_SERIES;

     if (DIFERENCIA > 0 ) THEN
     SUSPEND;
END
end

saludos
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


La franja horaria es GMT +2. Ahora son las 12:03:52.


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