Académique Documents
Professionnel Documents
Culture Documents
Server 2014
Enrique Catala Bauls
MVP , Mentor
ecatala@solidq.com
Twitter: @enriquecatala
www.enriquecatala.com
3 Sponsor Sessions at 11:15
1. Planes de ejecucin
2. Operadores
3. Cardinality estimator
Planes de ejecucin
Sabemos interpretarlos?
Optimizador de
consultas
5
Operadores
Cuntos y cuales son?
8
Operadores
Los bsicos que debes conocer
Non-clustered
index seek Table Scan RID Lookup Key Lookup Hash Match
Constant
Nested Loops Merge Join Compute Scalar Scan Spool
Repartition
Stream Aggregate Distribute Streams Gather Streams Streams Bitmap
9
Operadores
Qu son?
10
DEMO
Operadores bsicos
12
Procesamiento lgico
De una consulta
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
1. Evaluar expresiones
2. Eliminar duplicados
6. ORDER BY
7. OFFSET-FETCH/TOP
13
Planes de ejecucin
Flechas
14
Planes de ejecucin
Comparar planes
15
Operadores join
Nested loops
16
Tabla de Cursos: Tabla de Alumnos:
ID_Curso Nombre_Curso ID_Alum Nombre_Aluno ID_Curso
1Paisajismo 1Luis 2
2Fotografa 2Ana 6
3Arte Clsico 3Juan 5
4Matemticas 4Pepe 3
5Fsica 5Carlos 4
6Qumica 6Felipe 3
7Iratxe 5
8Mara 4
Resultado:
Nombre Alumno | Nombre Curso
1-Luis |2-Fotografa
4-Pepe |3-Arte Clsico
6-Felipe |3-Arte Clsico
5-Carlos |4-Matemticas
8-Mara |4-Matemticas
...
Operadores join
Merge join
get first row R1 from input 1
get first row R2 from input 2
while not at the end of either input
{
if R1 joins with R2
{
return (R1, R2)
get next row R2 from input 2
}
else if R1 < R2
get next row R1 from input 1
else
get next row R2 from input 2
}
18
Operadores join
Merge join
Tabla de Cursos: Tabla de Alumnos:
ID_Curso Nombre_Curso ID_Aluno
ID_Alum Nombre_Alumno ID_Curso
1Paisajismo s Nome_Aluno
1Lus s 2
2Fotografa 1Lus
4Pepe 23
3Arte Clsico 2Ana
6Felipe 63
4Matemticas 3Juan
5Carlos 54
5Fsica 4Pepe
8Mara 34
5Carlos 4
6Qumica
6Felipe 3
7Iratxe 5
8Mara 4
Resultado:
Nombre Alumno | Nombre Curso
1-Luis |2-Fotografa
4-Pepe |3-Arte Clsico
6-Felipe |3-Arte Clsico
5-Carlos |4-Matemticas
8-Mara |4-Matemticas
...
Operadores join
Hash join
20
Recomendaciones
No No Bloqueante
Merge Join
Hash Join
Nested Loop
bloqueante bloqueante
Eficiencia de Tabla inner
tabla inner Datos muy
(arriba) ordenados pequea
Soporta
cualquier Solo
join equijoin
Util cjtos
pequeos
Propiedades
DEMO
Leamos planes!
23
Operadores exchange
Distribute Streams
25
Operadores exchange
Gather streams
1. Planes de ejecucin
2. Operadores
3. Cardinality estimator
Cardinality estimator
El mayor cambio en el motor OnDisk desde SQL Server 7.0
Aporta el n de registros
Estima el recuento de
filas afectadas
Aporta distribucin de
valores
Aporta info distinct
count
Aporta info sobre
duplicados
29
Cardinality estimator
El mayor cambio en el motor OnDisk desde SQL Server 7.0
30
Cardinality estimator Acaso
eso
Desde SQL Server 7.0 hasta SQL Server 2012 sucede?
El rango menor se
asume contenido en el
Inclusin mayor
En equijoin se assume
que el valor existe
31
DEMO
Nuevo cardinality estimator
33
Conclusin
34
Gracias!