Transcript
Page 1: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Análisis de consultas

Page 2: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Introducción

Consultas que utilizan el operador AND

Consultas que utilizan el operador OR

Consultas que utilizan operaciones de combinación

Page 3: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Consultas que utilizan el operador AND

Procesamiento del operador AND

Devuelve las filas que cumplen todas las condiciones de cada criterio especificado en la cláusula WHERE

Limita de forma progresiva el número de filas devueltas con cada condición de búsqueda adicional

Puede utilizar un índice por cada condición de búsqueda de la cláusula WHERE

Directrices de indización y consideraciones de rendimiento

Definir un índice en un criterio de búsqueda altamente selectivo

Evaluar el rendimiento entre crear varios índices de una columna y un índice compuesto

Page 4: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Consultas que utilizan el operador OR

Devuelve las filas que cumplen cualquier condición de cada criterio especificado en la cláusula WHERE

Aumenta de forma progresiva el número de filas devueltas con cada condición de búsqueda adicional

Puede utilizar un índice o índices diferentes para cada parte del operador OR

Siempre realiza un recorrido de tabla o de índice agrupado si una columna a la que se hace referencia en el operador OR no tiene un índice o si éste no es útil

Puede utilizar varios índices

Page 5: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Consultas que utilizan operaciones de combinación

Selectividad y densidad de una cláusula JOIN

Cómo se procesan las combinaciones

Cómo se procesan las combinaciones de bucle anidado

Presentación multimedia: Cómo se procesan las combinaciones de mezcla

Consideraciones acerca del uso de combinaciones de mezcla

Cómo se procesan las combinaciones hash

Page 6: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Selectividad y densidad de una cláusula JOIN

Selectividad de una cláusula JOIN

Si las estadísticas están disponibles, se basa en la densidad del índice

Si las estadísticas no están disponibles, se basa en el número de consideraciones

Densidad de una cláusula JOIN

Un índice con un gran número de duplicados tiene alta densidad

Un índice único tiene baja densidad

SelectividadPor

cent

aje

de f

ilas

devu

elta

s

Page 7: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Cómo se procesan las combinaciones

membermembermembermembermember_nomember_no ……

.

.

.5678...

.

.

.5678...

.

.

.Chen...

.

.

.Chen...

ResultadoÍndiceno agrupado único Índice no agrupado

chargechargechargechargecharge_nocharge_no

.

.

.15259...16351...17673...

.

.

.15259...16351...17673...

member_nomember_no

.

.

.5678...5678...5678...

.

.

.5678...5678...5678...

……

member_nomember_no

5678567856785678567856785678567856785678567856785678

5678567856785678567856785678567856785678567856785678

charge_nocharge_no

30257176731525916351327784889760611667947439676840861738790299607

30257176731525916351327784889760611667947439676840861738790299607

……

(13 filas afectadas)

USE creditSELECT m.member_no, c.charge_no, c.charge_amt, c.statement_noFROM member AS m INNER JOIN charge AS cON m.member_no = c.member_noWHERE c.member_no = 5678

USE creditSELECT m.member_no, c.charge_no, c.charge_amt, c.statement_noFROM member AS m INNER JOIN charge AS cON m.member_no = c.member_noWHERE c.member_no = 5678

Page 8: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Cómo se procesan las combinaciones de bucle anidado

USE creditSELECT m.member_no, c.charge_no, c.charge_amt, s.statement_noFROM member AS m INNER JOIN charge AS cON m.member_no = c.member_no INNER JOIN statement AS sON c.member_no = s.member_noWHERE m.member_no = 5678

USE creditSELECT m.member_no, c.charge_no, c.charge_amt, s.statement_noFROM member AS m INNER JOIN charge AS cON m.member_no = c.member_no INNER JOIN statement AS sON c.member_no = s.member_noWHERE m.member_no = 5678

Combina el resultado con las filas correspondientes de la tabla charge

Recupera las filas correspondientesde ambas tablas y las combina

1111

2222

chargechargechargechargecharge_nocharge_no

.

.

.15259...16351...17673...

.

.

.15259...16351...17673...

member_nomember_no

.

.

.5678...5678...5678...

.

.

.5678...5678...5678...

statementstatementstatementstatementstatement_nostatement_no

.

.

.567815678...

.

.

.567815678...

member_nomember_no

.

.

.56785678...

.

.

.56785678...

……

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

membermembermembermembermember_nomember_no ……

.

.

.5678...

.

.

.5678...

.

.

.Chen...

.

.

.Chen...

Page 9: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Consideraciones acerca del uso de combinaciones de mezcla

Requiere que las columnas combinadas estén ordenadas

Evalúa valores ordenados

Utiliza un índice del árbol existente

Aprovecha las operaciones de ordenación

Realiza su propia operación de ordenación

Consideraciones acerca del rendimiento

USE creditSELECT m.lastname, p.payment_amt FROM member AS m INNER JOIN payment AS p ON m.member_no = p.member_no WHERE p.payment_amt < 7000 AND m.firstname < 'Jak'

USE creditSELECT m.lastname, p.payment_amt FROM member AS m INNER JOIN payment AS p ON m.member_no = p.member_no WHERE p.payment_amt < 7000 AND m.firstname < 'Jak'

Page 10: Análisis de consultas. Introducción Consultas que utilizan el operador AND Consultas que utilizan el operador OR Consultas que utilizan operaciones de

Cómo se procesan las combinaciones hash

Claves hash

xxxxxx

zzzzzz

yyyyyy

nnnnnn

..

..

..

member_nomember_nomember_nomember_no

11

..

..

..

98179817

..

..

..

Resultado member_nomember_nomember_nomember_no lastnamelastnamelastnamelastname …………

98179817 DeBrouxDeBroux ……

Bucket hashBucket hashBucket hashBucket hash

.

.

.

.

.

.

Filas de datosFilas de datosFilas de datosFilas de datos

yyy

98179817

..

..

..

DeBrouxDeBroux

……

1068610686

..

..

..

ZuvelZuvel

……

83428342

..

..

..

HjellenHjellen

……

xxx

Entrada de sonda Entrada de generación


Recommended