Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-10-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
lentitud al ordenar tabla

Buenas amigos,

Vereis, tengo 2 querys, en uno tengo productos con su nombre y en el otro tengo ventas de productos pero almaceno solo el id del producto.

cuando hago la consulta, relaciono el id del producto de ventas con el id del producto de productos y me saca el nombre.

Eso es normal y sin problemas, me saca los datos rapido, son 60 registros.

Si le añado un sortfields o indexfieldnames por nombre de producto para que los saque ordenados en ventas, ahi me tarda, no mucho claro, pero para 60 registros creo que es bastante ( que hara con 500 registros?).

Si hago lo mismo con flamerobin tambien tarda, y si, tengo indexados las tablas por nombre de producto y por id de producto.

Estoy usando lazarus y componentes zeos.
Responder Con Cita
  #2  
Antiguo 15-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No entiendo, ¿haces un select ordenador por un campo y es lento?, ejemplo:
Código SQL [-]
select codigo, nombre from cliente order by codigo
Responder Con Cita
  #3  
Antiguo 15-10-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
No no,

Tengo esto:

Código Delphi [-]
fmodulo.zqcortesventas.SQL.Clear;
fmodulo.zqcortesventas.SQL.Text:='select a.* from cortesventas a where  a.id_corte =:corte';
fmodulo.zqcortesventas.ParamByName('corte').asinteger:=corte;
fmodulo.zqcortesventas.active:=true;

Código Delphi [-]
Campo                 := Tstringfield.Create(fmodulo.zqcortesventas);
   Campo.FieldName       := 'nombrepro';
    campo.size               :=100;
   campo.FieldKind       :=fklookup;
   campo.keyfields        :='id_producto';
   campo.lookupdataset   :=fmodulo.zqproductos;
   campo.lookupkeyfields :='id_producto';
   campo.lookupresultfield:='nombreproducto';
   Campo.DataSet         := fmodulo.zqcortesventas;

No tardada nada sino lo ordeno, si lo ordeno si, tiene que hacer el select de arriba, acceder a la tabla de productos y sacar el nombre.

Ya lo arregle de otra forma y parece que si es rapido y funciona. Lo que tiene no pensar .

Código Delphi [-]
fmodulo.zqcortesventas.SQL.Clear;
fmodulo.zqcortesventas.SQL.Text:='select a.*,b.id_producto,b.nombreproducto as nombrepro from cortesventas a, productos b where a.id_producto=b.id_producto and a.id_corte =:corte';
fmodulo.zqcortesventas.ParamByName('corte').asinteger:=corte;
fmodulo.zqcortesventas.active:=true;

En la creacion del campo solo cree el campo nombrepro y ya trabaja rapido, en vez de usar un fklookup.

Última edición por anubis fecha: 15-10-2014 a las 20:09:11.
Responder Con Cita
  #4  
Antiguo 15-10-2014
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.042
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
No recuerdo haber usado esa manera de obtener datos.
¿Por qué no haces un select normal y corriente?
Código Delphi [-]
select a.codigo 
from ventas a
inner join clientes c on c.codigo=a.cliente
where a.codigo = ?
Responder Con Cita
  #5  
Antiguo 15-10-2014
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Poder: 18
anubis Va por buen camino
Correcto casimiro, tambien sirve y creo que mejor.
Código SQL [-]
select a.*,b.ID_PRODUCTO,b.NOMBREPRODUCTO as nombrepro from cortesventas a inner join PRODUCTOS b on a.ID_PRODUCTO=b.ID_PRODUCTO where a.ID_CORTE=36
Responder Con Cita
Respuesta



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
lentitud al adherir datos de otra tabla paradox yamahl Conexión con bases de datos 0 20-04-2009 23:58:06
Ordenar Una tabla por un Campo de otras Tabla teletranx Conexión con bases de datos 2 18-08-2006 15:56:35
Tabla Grande = Lentitud, Porque??? ELINK Firebird e Interbase 8 08-04-2005 15:46:59
ordenar tabla davidgaldo Conexión con bases de datos 7 25-02-2004 13:03:02
Ordenar tabla jfloro SQL 1 08-09-2003 13:39:47


La franja horaria es GMT +2. Ahora son las 03:50:36.


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
Copyright 1996-2007 Club Delphi