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 08-11-2004
joan joan is offline
Registrado
 
Registrado: oct 2004
Posts: 2
Poder: 0
joan Va por buen camino
Outer Join - View

Si alguien quiere perder un poco de tiempo y analizar una situacion
realmente extraña, aqui os la propongo.

Porque una query utilizando un OUTER JOIN tarda varios minutos y
la misma query pero creando una VIEW para simplificarla y utilizando
otra vez el OUTER JOIN nos da el resultado en muy pocos segundos!!
Código SQL [-]
  
QUERY1
=======
SELECT DISTINCT c.ref_num2, c.id_sup2, p.price
FROM CROSS_LIST c, CROSS_LIST c2 LEFT OUTER JOIN prices p ON c2.ref_num2=p.ref_num AND c2.id_sup2=p.id_sup 
WHERE c.ref_num='SB-00184R'
AND c.id_sup=534
AND c.ref_num2=c2.ref_num
AND c.id_sup2=c2.id_sup
 
PLAN1
=====
PLAN SORT (JOIN (JOIN (C2 NATURAL,P INDEX (PK_PRICES)),C INDEX (PK_CROSS_LIST)))
 
VIEW1
=====
CREATE VIEW CROSS_LIST_IT(
REF_NUM,
ID_SUP,
REF_NUM2,
ID_SUP2)
AS
SELECT c.ref_num, c.id_sup, c2.ref_num2, c2.id_sup2
FROM CROSS_LIST c, CROSS_LIST c2
WHERE c.ref_num2=c2.ref_num
AND c.id_sup2=c2.id_sup
 
QUERY2
======
 
select distinct c.ref_num2, c.id_sup2, p.price
from
CROSS_LIST_IT c LEFT OUTER JOIN prices p ON p.id_sup=c.id_sup2 AND p.ref_num=c.ref_num2 
WHERE c.ref_num='SB-00184R'
AND c.id_sup=534
 
PLAN2
=====
PLAN SORT (JOIN (JOIN (C C INDEX (PK_CROSS_LIST),C C2 INDEX (PK_CROSS_LIST)),P INDEX (PK_PRICES)))

CONCLUSION
===========

No entiendo porque en lo que es basicamente la misma consulta, hecha en
dos fases o en una, el PLAN en el caso 1 no utiliza el indice PK_CROSS_LIST
en C2 que esta a su disposicion.

Es un BUG de Firebird 1.5? Estoy cometiendo algun error el la QUERY1?

Saludos,
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 11:40:32.


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