Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Como puedo mejorar esta consulta...
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Como puedo mejorar esta consulta...

Publicar nuevo tema Responder al tema
Foros de discusión » Microsoft SQL Server, motor de base de datos profesional   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
Sizne
Magnífico usuario


Registrado: Oct 16, 2006
Mensajes: 46

Asunto: Como puedo mejorar esta consulta... Responder citando

Holas a todos, espero que puedan ayudarme con la siguiente consulta que la puse en DELPHI, solo que la busqueda como verán es muy lenta....demora muucho en encontrala...hasta tan solo escribir un nro se me demora en aparecer el el TEdit.
A continuacion les muestro el codigo que hice...
Código:

if E.Text <> '' then 
   with Q2 do
   begin
      Close;
      SQL.Text:= 'SELECT i.IdM,i.CiE,i.NomE,i.ApePE,i.ApeME,i.SexoE,i.FinscripcionE,i.CarreraE,i.DeptoE,i.CalleE,sum(TotalRec  ibido) as Monto FROM BDinscripcion i INNER JOIN BDbeca b ON i.IdE=b.IdE and ' + Buscar + ' LIKE '+ #39 + E.Text +'%'+#39+'Group by IdM,CiE,NomE,ApePE,ApeME,SexoE,FinscripcionE,CarreraE,DeptoE,CalleE';
      Open;
   end

Este codigo se encuentra en...
Código:

procedure TFdevolucion.EChange(Sender: TObject);
var campo,Buscar:string;
begin
campo :=  S.Text;
  if campo = 'Carnet Identidad' then Buscar:='CiE'
  else
    begin
      if campo = 'Nombre' then Buscar:='NomE'
      else
       begin
          if campo = 'Apellido Paterno' then Buscar:='ApePE'
          else
            begin
              if campo = 'Apellido Materno' then Buscar:='ApeME'
              else
                if campo = 'Departamento' then Buscar:='DeptoE';
            end;//fin paterno
       end;//fin nombre
    end;// fin primer else
   if E.Text <> '' then 
   with Q2 do
   begin
      Close;
      SQL.Text:= 'SELECT i.IdM,i.CiE,i.NomE,i.ApePE,i.ApeME,i.SexoE,i.FinscripcionE,i.CarreraE,i.DeptoE,i.CalleE,sum(TotalRec  ibido) as Monto FROM BDinscripcion i INNER JOIN BDbeca b ON i.IdE=b.IdE and ' + Buscar + ' LIKE '+ #39 + E.Text +'%'+#39+'Group by IdM,CiE,NomE,ApePE,ApeME,SexoE,FinscripcionE,CarreraE,DeptoE,CalleE';
      Open;
   end;
   if not Q2.IsEmpty = false then
    begin
      MessageDlg('No existe el registro',mtInformation,[mbOk],0);
      E.SetFocus;
    end;
end


Como verán es un busqueda que realiza a medida que se escribe en un TEdit. Selecciono varios campos que necesito de una TablaInscripcion y realiza una suma de los montos recibido de otra tablaBeca, cuando sus IDE sean iguales. De toda esta informacion estoy realizando una busqueda de todos aquellos que cumplan la condicion INNER JOIN.

Ahhhh!!! sino cologo el Group BY pues varios nombres se repetiran...cuantas veces hayan recibido el TOTALRECIBIDO.

Solo que se me hace lenta...
Alguna sugerencia....
gracias
MensajePublicado:
Jue Abr 15, 2010 8:56 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Microsoft SQL Server, motor de base de datos profesional  

Cambiar a:  
Key
  Puede publicar nuevos temas en este foro
No puede responder a temas en este foro
No puede editar sus mensajes en este foro
No puede borrar sus mensajes en este foro
No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A