Sei sulla pagina 1di 24

Ejemplos de

Optimización
p de
Consultas

Dr. Eugenio Santos Menéndez


Curso Académico 2005/06
esantos@eui.upm.es
t @ i
Revisado: Miguel Ángel Peña
Curso Académico 2008/09
Ejemplos de
Optimización
• Ejemplo 1.
ƒ Sea la Base de Datos siguiente:
¾ T (T#, NOM_TDA, CIUDAD) T: Tiendas
¾ P (P#, DESC, PRECIO) P: Productos
¾ A (A#, DIR_ALM, CIUDAD) A: Almacenes
¾ D (T#, P#, A#, CANT) D: Pedidos
ƒ Consulta:
¾ “Obtener los nombres de las tiendas que han
realizado
li d pedidos
did a almacenes
l d M
de Madrid”
d id”
πNOM_TDA (σ A.CIUDAD=”MADRID” (T * (A * D)))
Ejemplos de
Optimización
• Solución sin operadores derivados:
πNOM_TDA (σA.CIUDAD=”MADRID” (
σT.T#=D.T# and A.A#=D.A# (T x A x D)))
• G
Generamos ell árbol
á b l de
d consulta
lt
correspondiente a esta última
expresión algebraica.
Ejemplos de
Optimización
• Árbol de consulta inicial:
Resultado
esu do

ΠNOM_TDA

σA.CIUDAD=“MADRID

σT.T# = D.T# and A.A# = D.A#

× T

A D
Ejemplos de
Optimización
• La operación de selección
σA.CIUDAD=”MADRID”
A CIUDAD ”MADRID” sólo afecta a la
tabla A, por tanto, se desplaza
hasta A por aplicación de la
propiedad 66.
• La operación de selección
σT.T#=D.T# and A.A#=D.A# se puede
di idi en d
dividir dos: σT.T#=D.T# y
σA.A#=D.A# pudiéndose conmutar la
segunda selección con el producto
cartesiano
t i inmediatamente
i di t t
inferior.
• El árbol quedaría como sigue:
Ejemplos de
Optimización
Resultado

ΠNOM_TD
A

σT.T# = D.T#

σA.A# = D.A#
T

σA.CIUDAD=“MADRID”
D

A
Ejemplos de
Optimización
Árbol optimizado.
Resultado
- Conmutación de
selección y proyección
ΠNOM_TD
A - Conmutación de
proyección y producto
σT.T# = D.T# cartesiano.

ΠD.T# ΠT.T#,NOM_TDA

σA.A# = D.A#

× T

ΠA.A#
ΠD.A#,D.T#
σA.CIUDAD
A.CIUDAD=“MADRID”
MADRID

A D
Ejemplos de
Optimización
• Ejemplo 2.
ƒ Sea la Base de Datos:
¾ T (T#, CLASE, PRECIO)
T: Tabaco
¾ P ((P#, NOMBRE, PAIS))
P: Productor
¾ F (F#, T#, FNOMBRE, CANT)
F: Fumador
¾ S (T#, P#)
S: Suministro
ƒ Consulta:
¾ “Obtener los nombres de los
fumadores de tabaco rubio fabricado
en USA”
πFNOMBRE (σ PAIS=”USA” and CLASE=“RUBIO”
(F * S * T * P)))
Ejemplos de
Optimización
• Solución sin operadores derivados:
πFNOMBRE (σ PAIS=”USA” and CLASE=“RUBIO”
(σF.T#=S.T# and T.T#=S.T# and P.P#.S.P#
(F × S × T × P)))

• Generamos el árbol de consulta


correspondiente a esta última
expresión algebraica.
algebraica
Ejemplos de
Optimización
Resultado
• Árbol de consulta inicial:

ΠFNOMBRE

σPAIS=“USA” and CLASE=“RUBIO”

σF.T# = T.T# and T.T# = S.T# and P.P#=S.P#

× F

×
S
P T
Ejemplos de
Optimización
• La operación de selección σ PAIS=”USA”
CLASE= RUBIO sólo afecta a las tablas
and CLASE=“RUBIO”
P y T, por tanto, se descompone en dos
selecciones, σ PAIS=”USA” y
σ CLASE=“RUBIO” y cada una se desplaza
hasta P y T respectivamente, por
aplicación de la propiedad 6.
• La operación de selección:
σF.T#=S.T# and T.T#=S.T# and P.P#.S.P# se
puede dividir en tres: σF.T#=S.T# ,
σT.T#=D.T# y σP.P#=S.P# pudiéndose
conmutar la primera y segunda
selecciones con los productos
cartesianos inferiores.
• El árbol quedaría como sigue:
Ejemplos de
Optimización
Resultado

ΠFNOMBRE

σP.P#=S.P#

σT.T# = S.T#
σPAIS=
PAIS=“USA”
USA

×
P
σF.T# = T.T#
S
×
σCLASE
CLASE=“RUBIO”
RUBIO
F

T
Ejemplos de
Optimización
Árbol optimizado

¿Qué operaciones finales


pueden
d faltar?
f l
Ejercicio Optimiz. Consultas
• Ejemplo 3.
3
ƒ Obtener los nombres de las tiendas
que sólo han pedido el producto ‘P1’
en cantidad superior a 100 unidades a
almacenes de su misma ciudad:
πNOM_TDA (T * (πT# (σCANT>100 and P#=”P1” (T*D)) -
πT# (σCANT>100 and P#=”P1” and T.CIUDAD<>A.CIUDAD (T*D*A))))
ƒ Expresada sin JOIN:
πNOM_TDA (σT.T#=R´.T# (T x R’))
R’ = πT# (σCANT>100 and P#=”P1” (σT.T#=D.T# (TxD)) -

πT#(σCANT>100 and P#=


P#=”P1”
P1 and T
T.CIUDAD<>A.CIUDAD
CIUDAD<>A CIUDAD

(σT.T#=D.T# and A.A#=D.A# (TxDxA)))


Ejercicio Optimiz. Consultas
• El árbol correspondiente sería:
Resultado

ΠNOM_TDA

σT.T#=R'.T#
x

T -

ΠT# ΠT#

σ CANT>100 and σ CANT>100 and


P#='P1' T.CIUDAD<>A.CIUDAD and
P#='P1'

σ T.T#=D.T# σ T.T#=D.T# and


A.A#=D.A#

x x

D T x T

R’ A D
Ejercicio Optimiz. Consultas
1Separar selecciones compuestas en
selecciones simples:
¾ σ CANT>100 and P#=”P1” and T.CIUDAD<>A.CIUDAD se
descompone en σ CANT>100 AND P#=“P1”
P# “P1” y en σ
T.CIUDAD<>A.CIUDAD.
¾ σ A.A#=D.A# and T.T#=D.T# se descompone en σ
A.A#=D.A# y en σ T.T#=D.T#

2 σ CANT>100 and P#=”P1” sólo afecta a


tabla D, se desplaza hasta D por
propiedad
i d d 6 ((en ambosb casos). )
3Selecciones del JOIN:
¾ σ T.T#=D.T# no se conmuta
conmuta.
¾ σ A.A#=D.A# se conmuta con el producto
cartesiano inmediatamente inferior.
Ejercicio Optimiz. Consultas
• El árbol correspondiente sería:
Resultado

ΠNOM_TDA

σT.T#=R'.T#
x

T -

ΠT# ΠT#

σ T.T#=D.T# σ T.CIUDAD <> A.CIUDAD

σ T.T#=D.T#
x
x
σ CANT>100 and T
P#='P1' σA.A#=D.A# T
D x

A σCANT>100 and P#='P1'


D
Ejercicio Optimiz. Consultas
1Por la propiedad 5, podemos sustituir:
¾ Los nodos π NOM_TDA y σ T.T#=R’.T#
¾ Por los nodos π NOM_TDA
σ T.T#=R’.T#
π NOM_TDA,T.T#,R´.T#
2Asimismo, la propiedad 11 nos
permite conmutar π NOM_TDA,T.T#,R’.T#
con el producto cartesiano
inmediatamente inferior:
¾ π NOM_TDA,T.T# sobre T
¾ π R’.T# sobre el resultado de la diferencia.

• El árbol correspondiente quedaría:


Ejercicio Optimiz. Consultas
Resultado

ΠNOM_TDA

σT.T#=R'.T#
x

Π NOM_TDA,T.T# Π R'.T#

T -

ΠT# ΠT#

σ T.T#=D.T# σ T.CIUDAD <> A.CIUDAD

σ T.T#=D.T#
x
x
σ CANT>100 and T
P#='P1' σA.A#=D.A# T
D x

A σCANT>100 and P#='P1'


D
Ejercicio Optimiz. Consultas
1La proyección π R’.T# sobre la
diferencia es redundante (se elimina).
2Por la propiedad 5 podemos sustituir:
¾ Los nodos π T# y σ T.T#=D.T#
¾ Por los nodos π T#
σ T.T#
T T#=DD.T#
T#
π T.T#,D.T#
3Asimismo la propiedad 11 nos
permite conmutar π T.T#,D.T#
T T# D T# con el
producto cartesiano inmediatamente
inferior:
¾ π D.T# sobre
b ell resultado
l d ded la l ió σ
l selección
CANT>100 and P#=“P1”

¾ π T.T# sobre T
Ejercicio Optimiz. Consultas
4Por la propiedad 5 podemos sustituir:
¾ Los nodos π T# , σ T.CIUDAD<>A.CIUDAD y
σ T.T#=D.T#
¾ Por los nodos π T#
σ T.CIUDAD<>A.CIUDAD
σ T.T#=D.T#
π T.T#,T.CIUDAD,D.T#,A.CIUDAD
5También la propiedad 11 nos permite
conmutar π T.T#,T.CIUDAD,D.T#,A.CIUDAD
con el producto cartesiano
inmediatamente inferior:
¾ π D.T#,A.CIUDAD
D T# A CIUDAD sobre el resultado de la
selección σ A.A#=D.A#
¾ π T.T#,T.CIUDAD sobre T

• El árbol correspondiente quedaría:


Ejercicio Optimiz. Consultas
Resultado

ΠNOM_TDA

σT.T#=R'.T#
x

Π NOM_TDA,T.T# -

T
ΠT# ΠT#
σ T.T# = D.T# σ T.CIUDAD <> A.CIUDAD

x σ T.T# = D.T#
x
ΠD.T#
D T# Π T.T#
T T#

Π D.T#, A.CIUDAD Π T.T#, T.CIUDAD


σ CANT>100 and T
P# = 'P1' σA.A# = D.A# T
D x

A σ CANT>100 and P#='P1'


D
Ejercicio Optimiz. Consultas
1Por la propiedad 5 podemos sustituir:
¾ Los nodos π D.T#,A.CIUDAD y
σ A.A#=D.A#
¾ Por los nodos π D.T#.A.CIUDAD
σ A.A#=D.A#
π D.A#,D.T#,A.A#,A.CIUDAD
2Asimismo la propiedad 11 nos
permite conmutar π
D A# D T# A A# A CIUDAD con p
D.A#,D.T#,A.A#,A.CIUDAD producto
cartesiano inmediatamente inferior:
¾ π D.T#,D.A# sobre el resultado de la selección
σ CANT>100
CANT 100 andd P#
P#=“P1”
“P1”

¾ π A.A#,A.CIUDAD sobre A

• El árbol final optimizado quedaría:


Ejercicio Optimiz. Consultas
Resultado

ΠNOM_TDA
σT.T#=R'.T#
x

Π NOM_TDA,T.T# -

T ΠT# ΠT#
σ T.T# = D.T# σ T.CIUDAD <> A.CIUDAD
x σ T.T# = D.T#

ΠD.T# Π T.T# x

σ CANT>100 and T
Π D.T#, A.CIUDAD Π T.T#, T.CIUDAD
P# = 'P1'
P1
σA.A# = D.A# T
D
x

Π A.A#, A.CIUDAD Π D.T#, D.A#


A σCANT>100 and P#='P1'
D

Potrebbero piacerti anche