Ver Mensaje Individual
  #1  
Antiguo 24-05-2007
Paradiso Paradiso is offline
Miembro
 
Registrado: jun 2004
Posts: 68
Reputación: 20
Paradiso Va por buen camino
Thumbs up Ayuda Urgente, Por favor. Tarda mucho en traer los datos.

Hola a todos.
Seriamente.
Delphi 7 + Interbase 6.5 + DbExpress + DevExpress.

esta es la tabla y su estructura:

CREATE GENERATOR GEN_TC_CLIENTE_ID;

CREATE TABLE TC_CLIENTE (
NRO AUTONUMERICO NOT NULL /* AUTONUMERICO = INTEGER */,
RAZON_SOCIAL NOMBRE_CORTO NOT NULL COLLATE ES_ES /* NOMBRE_CORTO = VARCHAR(50) */,
NOMBRE_COMERCIAL NOMBRE_CORTO COLLATE ES_ES /* NOMBRE_CORTO = VARCHAR(50) */,
CONDICION_IVA AUTONUMERICO NOT NULL /* AUTONUMERICO = INTEGER */,
CUIT CUIT NOT NULL /* CUIT = VARCHAR(13) */,
DIRECCION DOMICILIO NOT NULL /* DOMICILIO = VARCHAR(30) */,
PROVINCIA AUTONUMERICO /* AUTONUMERICO = INTEGER */,
LOCALIDAD AUTONUMERICO /* AUTONUMERICO = INTEGER */,
CODIGO_POSTAL CODIGO_POSTAL /* CODIGO_POSTAL = VARCHAR(20) */,
TELEFONO TELEFONO /* TELEFONO = VARCHAR(40) */,
FAX TELEFONO /* TELEFONO = VARCHAR(40) */,
MOVIL TELEFONO /* TELEFONO = VARCHAR(40) */,
NEXTEL TELEFONO /* TELEFONO = VARCHAR(40) */,
EMAIL EMAIL /* EMAIL = VARCHAR(100) */,
LISTA_PRECIO LISTA_PRECIO /* LISTA_PRECIO = INTEGER */,
ULTIMA_COMPRA FECHA_HORA /* FECHA_HORA = TIMESTAMP */,
ULTIMO_PAGO FECHA_HORA /* FECHA_HORA = TIMESTAMP */,
SALDO "PRECIO UNITARIO" DEFAULT 0 NOT NULL /* "PRECIO UNITARIO" = NUMERIC(15,4) */,
ACTIVO ACTIVO DEFAULT 0 NOT NULL /* ACTIVO = INTEGER */,
SALDO_I NUMERIC(15,2) DEFAULT 0.00 NOT NULL,
CONTACTO VARCHAR(50) CHARACTER SET WIN1251,
NOTA BLOB SUB_TYPE 1 SEGMENT SIZE 4096,
CONVENIO_MULTILATERAL VARCHAR(12) CHARACTER SET WIN1251,
CONDICION_VENTA INTEGER DEFAULT 0,
CATEGORIA_CLIENTE VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
GERENTE VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
JEFE_DE_COMPRA VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
JEFE_TECNICO VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
CATEGORIA_INSTALADOR VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
INSTALADOR_1 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
INSTALADOR_2 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
INSTALADOR_3 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
INSTALADOR_4 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
INSTALADOR_5 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
EMPRESA_DE_SERVICIOS_1 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
EMPRESA_DE_SERVICIOS_2 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
EMPRESA_DE_SERVICIOS_3 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
CONTACTO_1 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
CONTACTO_2 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
CONTACTO_3 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
CONTACTO_4 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
CONTACTO_5 VARCHAR(25) CHARACTER SET ISO8859_1 COLLATE ES_ES,
MAIL_CONTACTO_1 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
MAIL_CONTACTO_2 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
MAIL_CONTACTO_3 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
MAIL_CONTACTO_4 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
MAIL_CONTACTO_5 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONOS_INSTALADOR_1 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONOS_INSTALADOR_2 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONOS_INSTALADOR_3 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONOS_INSTALADOR_4 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONOS_INSTALADOR_5 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
NOTA_CONTACTOS BLOB SUB_TYPE 1 SEGMENT SIZE 4096,
TELEFONO_CONTACTO_1 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONO_CONTACTO_2 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONO_CONTACTO_3 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONO_CONTACTO_4 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES,
TELEFONO_CONTACTO_5 VARCHAR(40) CHARACTER SET ISO8859_1 COLLATE ES_ES
);




/******************************************************************************/
/**** Primary Keys ****/
/******************************************************************************/

ALTER TABLE TC_CLIENTE ADD CONSTRAINT PK_TC_CLIENTE PRIMARY KEY (NRO);


/******************************************************************************/
/**** Indices ****/
/******************************************************************************/

CREATE INDEX TC_CLIENTE_IDX1 ON TC_CLIENTE (RAZON_SOCIAL);
CREATE INDEX TC_CLIENTE_IDX2 ON TC_CLIENTE (NOMBRE_COMERCIAL);
CREATE INDEX TC_CLIENTE_IDX3 ON TC_CLIENTE (NRO, PROVINCIA, LOCALIDAD);


/******************************************************************************/
/**** Triggers ****/
/******************************************************************************/


SET TERM ^ ;


/******************************************************************************/
/**** Triggers for tables ****/
/******************************************************************************/



/* Trigger: TC_CLIENTE_BI */
CREATE TRIGGER TC_CLIENTE_BI FOR TC_CLIENTE
ACTIVE BEFORE INSERT POSITION 0
AS
BEGIN
IF (NEW.NRO IS NULL) THEN
NEW.NRO = GEN_ID(GEN_TC_CLIENTE_ID,1);
END


===================================================

" Esta es la Consulta:"



SELECT C.NRO,
C.RAZON_SOCIAL,
C.NOMBRE_COMERCIAL,C.CUIT,
C.LISTA_PRECIO,
C.CONDICION_VENTA,
C.DIRECCION,
C.NOTA,
FP.DESCRIPCION AS FORMADEPAGO
FROM TC_CLIENTE C
JOIN TC_FORMA_PAGO FP ON FP.NRO = TC_CLIENTE.CONDICION_VENTA
WHERE ( (C.ACTIVO = 0) AND :OPCION = 0) OR
( C.ACTIVO = 0 AND C.CONDICION_IVA = :OPCION ) OR
( C.ACTIVO = 0 AND C.CONDICION_IVA > 1 AND :OPCION = 2)
ORDER BY C.NOMBRE_COMERCIAL ASC


Este es el Problema: la cantidad de registros es de 34.000 y en un Atlhon 3000+ con 1 gb de RAM, tarda muchisimo en abrir la misma. si lo hago desde IBExpert no tarda nada, pero desde mi aplicacion si.

uso para mostrar los datos una grilla DBGrid.
la cual he tocado para que optimice la vista considerando la cantidad de datos, pero ahun asi sigue tardando muchisimo.
en las maquinas donde va a correr la aplicacion tarda mas de 1 minuto en traer los datos.

Realmente no se que hacer. para solucionar este problema
saludos y gracias.
Responder Con Cita