Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-06-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 24
Giniromero Va por buen camino
Hola cadetill,


Cita:
Empezado por cadetill
Con el IBExpert mismo puedes controlarlo (paso a paso) www.ibexpert.com
La versión personal es gratuita
Pero con la versión gratuita, ¿se puede estudiar el plan de ejecución de cada una de las consultas involucradas? ¿como? ¿donde?

Cita:
Empezado por cadetill
no es una "version" de SQL "instalada" en tu PC, sino cómo usas el SQL, la definición de los estandares (soportados o no por los motores de bases de datos).
vale
Cita:
Empezado por cadetill

El estándar del 92, la mayoría de SGBD lo soportan. En él, se definieron entro otras cosas, el uso de los JOINS (inner, left, outer)


Aquí:
Código SQL [-]
from renopla2 EXTE, grupos
Si no usas joins, lo que estás creando es un producto cartesiano. En este caso entre renopla2 y grupos.
¿por no usar un inner join?, vale, y si eso implica que creo un producto cartesiano, y eso implica que va más lento, ¿como hago para, usando el inner join, poder usar el código:

Código SQL [-]
where (( select count (*) from renopla2 inte
         Where inte.numalu=exte.numalu)=1 )

Muchas gracias,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)

Última edición por Giniromero fecha: 09-06-2004 a las 13:31:45.
Responder Con Cita
  #2  
Antiguo 09-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
Hola.

Cita:
Empezado por Giniromero
Pero con la versión gratuita, ¿se puede estudiar el plan de ejecución de cada una de las consultas involucradas? ¿como? ¿donde?
Cuando lanzas una consulta cualquiera en el SQL Editor de las IB-Expert, en la ventana inferior te muestra el plan de ejecución estimado y utilizado (asi como el tiempo de ejecución, etc. ...)

El plan de ejecución consta de la lista de índices que se utilizan para optimizar la consulta.

Para más información sobre los planes de ejecución puedes utilizar la herramienta IbPLANAnalyzer http://delphi.weblogs.com/IBPLANalyzer

Cita:
Empezado por Giniromero
¿por no usar un inner join?, vale, y si eso implica que creo un producto cartesiano, y eso implica que va más lento, ¿como hago para, usando el inner join, poder usar el código:
Se crea un producto cartesiano al lanzar una consulta de este tipo (sintaxis slq'89) :

select XXX from Tabla1, Tabla2

Deberias especificar el tipo de unión de las tablas mediante un Inner Join o un Left Outer Join.

select XXX
from Tabla1
inner join Tabla2 on Tabla1.Campo1 = Tabla2.Campo2

(consulta la documentación de Interbase para mas detalles del inner y outer join)

Cita:
Empezado por Giniromero
Código SQL [-]
where (( select count (*) from renopla2 inte
Where inte.numalu=exte.numalu)=1 )
Este condición no tiene nada que ver con la sintaxis de uniones de tablas de sql'89 i sql'92. Es perfectamente válida independientemente de como se hayan indicado las uniones de las tablas involucradas.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 09-06-2004 a las 15:32:17.
Responder Con Cita
  #3  
Antiguo 09-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
Respecto a los planes de ejecución. En IB-Expert tienes una pestaña al cargar un procedimiento almacenado, llamada 'Plan Analyzer', en ella se muestran en forma de árbol los planes de las consultas del procedimiento.

NOTA: Aunque me parece que esto no está disponible en la versión gratuita.

Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita
  #4  
Antiguo 11-06-2004
Giniromero Giniromero is offline
Miembro
 
Registrado: may 2003
Ubicación: Madrid
Posts: 296
Poder: 24
Giniromero Va por buen camino
Hola,

Vale, me he bajado el trial de la versión completa del IbExpert, y el IbPLANAnalyzer.

He descubierto, que hay algo que no necesitaba, y que me cargaba mucho el procedimiento.

En cualquier caso, ahora no me funciona correctamente el código de :

Código:
where (( select count (*) from alumnos inte
         Where inte.numalu=exte.numalu)=1 )
El código que tengo ahora mismo es:


Código:
select distinct exte.NUMALU, (exte.NOMALU || ' ' || exte.APELALU) AS NOMBRE,
 exte.TELFALU,
  matri.fecfin,
  grupos.alias,
 (clientes.nomcl || ' ' ||  clientes.apelcl) as nomcli,
 comen.alias

 FROM ((((alumnos exte INNER JOIN matri ON exte.numalu=matri.NUMALU)
       inner JOIN grupos ON matri.numgrup=grupos.numgrup)
       inner join clientes on exte.nic=clientes.nic)
       inner join comen on exte.numalu=comen.numalu)

/* Donde tengan matrícula activas y el producto asociado a esta, esto es el curso
esté entre el 21 y el 40, que son los grupos de los niños y jovenes*/

 where (( select count (*) from alumnos inte
         Where inte.numalu=exte.numalu)=1 )

 and ((matri.caubaja=1) and (grupos.PRODUCTO>'21' and grupos.producto<='40'))
 /* Que ademas tengan comentario de recomendacion curso siguiente y sea de este año*/
 AND  ((comen.tipo=97) and (extract (year from comen.fecha))=(extract (year from current_date)))

 ORDER BY exte.numalu
Tiene que haber algo mal que hace que la parte del:

Código:
where (( select count (*) from alumnos inte
         Where inte.numalu=exte.numalu)=1 )
No funcine correctamente. ¿alguna Idea?

Muchas gracias por vuestra paciencia,

Virginia
__________________
Sonrie al mundo, y el mundo te sonreirá :)
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


La franja horaria es GMT +2. Ahora son las 01:23:11.


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