SlideShare uma empresa Scribd logo
1 de 30
Baixar para ler offline
Planes de ejecución en SQL
Server 2014
Enrique Catala Bañuls
MVP , Mentor
ecatala@solidq.com
Twitter: @enriquecatala
www.enriquecatala.com
3 Sponsor Sessions at 11:15
 Don’t miss them, they might be getting
distributing some awesome prizes!
 Attunity
 SolidQ
 ApexSQL
 Also Raffle prizes at the end of the
event provided by
Cisco, SolidQ, Attunity, ApexSQL &
Microsoft
Our Main Sponsors:
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
Planes de ejecución
¿Sabemos interpretarlos?
5
Optimizador de
consultas
Sentencia SQL Plan de ejecución
Mágia
Operadores
¿Cuántos y cuales son?
8
Operadores
Los básicos que debes conocer
9
SELECT Sort
Clustered Index
Seek
Clustered Index
Scan
Non-clustered
index scan
Non-clustered
index seek Table Scan RID Lookup Key Lookup Hash Match
Nested Loops Merge Join Compute Scalar
Constant
Scan Spool
Stream Aggregate Distribute Streams Gather Streams
Repartition
Streams Bitmap
Split Top Filter Lazy Spool Eager Spool
Operadores
¿Qué son?
10
 Todo operador funciona pidiendo filas de uno o
mas hijos y devolviéndolas al que se las ha pedido
 Caso especial Common Table Spool
 Cada operador devuelve de 1 fila en 1 fila
 *No todos -> Ver sesión Niko Neugebauer a las 13h BI
DEMO
12
Operadores básicos
Procesamiento lógico
De una consulta
13
1. FROM
2. WHERE
3. GROUP BY
4. HAVING
5. SELECT
1. Evaluar expresiones
2. Eliminar duplicados
6. ORDER BY
7. OFFSET-FETCH/TOP
Planes de ejecución
Flechas
14
¿Ves la diferencia en el grosor de la flecha? 
Estimación un poco equivocada! 
1. Analiza el grosor de las flechas
2. Compara los valores del plan estimado vs. el real
Planes de ejecución
Comparar planes
15
 Fíjate en los % de consulta
Operadores join
Nested loops
16
for each row R1 in the outer table
for each row R2 in the inner table
if R1 joins with R2
return (R1, R2)
*No confundir inner table con inner join ni
outer table com outer join
ID_Alum Nombre_Aluno ID_Curso
1Luis 2
2Ana 6
3Juan 5
4Pepe 3
5Carlos 4
6Felipe 3
7Iratxe 5
8María 4
Tabla de Alumnos:
ID_Curso Nombre_Curso
1Paisajismo
2Fotografía
3Arte Clásico
4Matemáticas
5Física
6Química
Tabla de Cursos:
Resultado:
Nombre Alumno | Nombre Curso
1-Luis |2-Fotografía
4-Pepe |3-Arte Clásico
6-Felipe |3-Arte Clásico
5-Carlos |4-Matemáticas
8-María |4-Matemáticas
...
Operadores join
Merge join
18
 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
 }
Tabla de Alumnos:
ID_Curso Nombre_Curso
1Paisajismo
2Fotografía
3Arte Clásico
4Matemáticas
5Física
6Química
Tabla de Cursos:
Resultado:
ID_Aluno
s Nome_Aluno
ID_Curso
s
1Luís 2
2Ana 6
3Juan 5
4Pepe 3
5Carlos 4
6Felipe 3
7Iratxe 5
8María 4
ID_Alum Nombre_Alumno ID_Curso
1Luís 2
4Pepe 3
6Felipe 3
5Carlos 4
8María 4
Nombre Alumno | Nombre Curso
1-Luis |2-Fotografía
4-Pepe |3-Arte Clásico
6-Felipe |3-Arte Clásico
5-Carlos |4-Matemáticas
8-María |4-Matemáticas
...
Operadores join
Merge join
Operadores join
Hash join
20
 Ejecución en dos fases
1. Build: Cálculo de clave hash del inner
2. Prueba: Lee la outer, crea su hash y compara con hash
precalculado en fase build
for each row R1 in the build table
{
calculate hash value on R1 join key(s)
insert R1 into the appropriate hash bucket
}
for each row R2 in the probe table
{
calculate hash value on R2 join key(s)
for each row R1 in the corresponding hash bucket
if R1 joins with R2
return (R1, R2)
}
RecomendacionesNestedLoop
• No
bloqueante
• Eficiencia de
tabla inner
(arriba)
• Soporta
cualquier
join
• Util cjtos
pequeños
MergeJoin
• No
bloqueante
• Datos
ordenados
• Solo
equijoin
HashJoin
• Bloqueante
• Tabla inner
muy
pequeña
Propiedades
DEMO
23
Leamos planes!
Operadores exchange
Distribute Streams
Hash
• Los valores de
filas obtienen
hash y cada
hilo se
responsabiliza
de un rango
hash
Round Robin
• Los valores de
las filas se
envían al
siguiente hilo
de la lista
Range
• Determina a
que hilo enviar
la fila
evaluando una
funcion de
rango sobre
una columna
• Rara y usada
en algunos
parallel index
recreation
Broadcast
• Todas las filas
se envian a
todos los hilos
Demand
• Se usa un
modo pull en
lugar de push
como en las
otras.
• Envia la fila al
thread que se
la está
pidiendo
• Aparece en
tablas
particionadas
Operadores exchange
Repartition streams
25
• Consume múltiples fuentes y produce multiples fuentes
• No se modifican las filas
• Se reducen filas si aparece un operador bitmap
Operadores exchange
Gather streams
• Consume múltiples hilos y produce un único hilo
• Combina resultados
• Es el que mayor % de esperas suele generar
Agenda
1. Planes de ejecución
2. Operadores
3. Cardinality estimator
Cardinality estimator
El mayor cambio en el motor “OnDisk” desde SQL Server 7.0
29
• Aporta el nº de registros
involucrados en la
sentencia (en cada paso)
• Estima el recuento de
filas afectadas
• Aporta distribución de
valores
• Aporta info distinct
count
• Aporta info sobre
duplicados
Estimarselectividaddelpredicado
WHERE
• Se decide el algoritmo de obtención de datos
• Malas interpretaciones producen
• Malos planes de ejecución
• Mal rendimiento de consultas
Cardinality estimator
El mayor cambio en el motor “OnDisk” desde SQL Server 7.0
30
Cardinality estimator
Desde SQL Server 7.0 hasta SQL Server 2012
31
Independencia
• Distribución de datos
independiente de unos
campos a otros salvo
que se indique lo
contrario
Uniformidad
• Los valores se
distribuyen
uniformemente
Contenido
• Si algo se busca será
porque existe
• Si una table se cruza,
será porque existe el
dato en ambas
• El rango menor se
asume contenido en el
mayorInclusión
• En equijoin se assume
que el valor existe
¿Acaso
eso
sucede?
DEMO
33
Nuevo cardinality estimator
Conclusión
1. Ser capaces de leer los planes de
ejecución
2. Conocer el funcionamiento de los
operadores mas importantes
3. Conocer algunas novedades en SQL
Server 2014
34
Gracias!
Enrique Catala Bañuls
ecatala@solidq.com
Twitter: @enriquecatala
www.enriquecatala.com

Mais conteúdo relacionado

Semelhante a Planes de ejecución en sql server 2014

24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
SpanishPASSVC
 
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTASIntroducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Julián Castiblanco
 
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
SpanishPASSVC
 

Semelhante a Planes de ejecución en sql server 2014 (20)

24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
24 HOP edición Español - Planes de ejecución en sql server 2014 - Enrique Catala
 
Como leer planes de ejecución
Como leer planes de ejecuciónComo leer planes de ejecución
Como leer planes de ejecución
 
Planes de ejecución 1
Planes de ejecución 1Planes de ejecución 1
Planes de ejecución 1
 
Tutorial de Raptor
Tutorial de RaptorTutorial de Raptor
Tutorial de Raptor
 
Raptor
RaptorRaptor
Raptor
 
Raptor
RaptorRaptor
Raptor
 
Raptor
RaptorRaptor
Raptor
 
Mini Manual Raptor
Mini Manual RaptorMini Manual Raptor
Mini Manual Raptor
 
Raptor
RaptorRaptor
Raptor
 
raptor manual
raptor manualraptor manual
raptor manual
 
Raptor
RaptorRaptor
Raptor
 
Tema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmicoTema 4 -_introduccion_a_razonamiento_algoritmico
Tema 4 -_introduccion_a_razonamiento_algoritmico
 
Scripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUMScripting para Mikrotik - Presentación Nunsys en MUM
Scripting para Mikrotik - Presentación Nunsys en MUM
 
Conviértete en un PowerDBA con PowerShell
Conviértete en un PowerDBA con PowerShellConviértete en un PowerDBA con PowerShell
Conviértete en un PowerDBA con PowerShell
 
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTASIntroducción a JOINS, CTE, APPLY y SUBCONSULTAS
Introducción a JOINS, CTE, APPLY y SUBCONSULTAS
 
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
24 HOP edición Español - Introduccion a multidimensional expressions (mdx) en...
 
Diana010
Diana010Diana010
Diana010
 
FUNDAMENTALS: Planes de ejecución I
FUNDAMENTALS: Planes de ejecución I FUNDAMENTALS: Planes de ejecución I
FUNDAMENTALS: Planes de ejecución I
 
Rc johanna ricardo-ppt
Rc johanna ricardo-pptRc johanna ricardo-ppt
Rc johanna ricardo-ppt
 
Rc johanna ricardo-ppt
Rc johanna ricardo-pptRc johanna ricardo-ppt
Rc johanna ricardo-ppt
 

Mais de Enrique Catala Bañuls

Mais de Enrique Catala Bañuls (20)

Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql server
 
Capas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL ServerCapas de acceso a datos .net escalables de verdad contra SQL Server
Capas de acceso a datos .net escalables de verdad contra SQL Server
 
Paralelismo en SQL Server
Paralelismo en SQL ServerParalelismo en SQL Server
Paralelismo en SQL Server
 
Aplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidor
 
Técnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql serverTécnicas avanzadas para resolver tus problemas de sql server
Técnicas avanzadas para resolver tus problemas de sql server
 
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
Capas de acceso a datos .NET escalables de verdad: el batido perfecto para el...
 
Planes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v nextPlanes de ejecución 3.0 sql 2016 y v next
Planes de ejecución 3.0 sql 2016 y v next
 
Paralelismo en sql server
Paralelismo en sql serverParalelismo en sql server
Paralelismo en sql server
 
Aplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidorAplicando R al análisis de rendimiento de un servidor
Aplicando R al análisis de rendimiento de un servidor
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2016
Planes de ejecucion 2016Planes de ejecucion 2016
Planes de ejecucion 2016
 
Sql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladoresSql server 2016 novedades para desarrolladores
Sql server 2016 novedades para desarrolladores
 
Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)Dawarehouse como servicio en azure (sqldw)
Dawarehouse como servicio en azure (sqldw)
 
Query store
Query storeQuery store
Query store
 
Planes de ejecucion 2
Planes de ejecucion 2Planes de ejecucion 2
Planes de ejecucion 2
 
Migración a sql server 2016
Migración a sql server 2016Migración a sql server 2016
Migración a sql server 2016
 
Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)Datawarehouse como servicio en azure (sqldw)
Datawarehouse como servicio en azure (sqldw)
 
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
Como hacer tuning a capas de acceso a datos en .NET (dotNetConference2016)
 
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
HERRAMIENTA CASE PARA MODELADO DE ALMACENES DE DATOS BASADA EN LENGUAJES ESPE...
 
SQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql serverSQLCLR: .NET en el core de sql server
SQLCLR: .NET en el core de sql server
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 

Planes de ejecución en sql server 2014

  • 1. Planes de ejecución en SQL Server 2014 Enrique Catala Bañuls MVP , Mentor ecatala@solidq.com Twitter: @enriquecatala www.enriquecatala.com
  • 2. 3 Sponsor Sessions at 11:15  Don’t miss them, they might be getting distributing some awesome prizes!  Attunity  SolidQ  ApexSQL  Also Raffle prizes at the end of the event provided by Cisco, SolidQ, Attunity, ApexSQL & Microsoft
  • 4. Agenda 1. Planes de ejecución 2. Operadores 3. Cardinality estimator
  • 5. Planes de ejecución ¿Sabemos interpretarlos? 5 Optimizador de consultas Sentencia SQL Plan de ejecución Mágia
  • 7. Operadores Los básicos que debes conocer 9 SELECT Sort Clustered Index Seek Clustered Index Scan Non-clustered index scan Non-clustered index seek Table Scan RID Lookup Key Lookup Hash Match Nested Loops Merge Join Compute Scalar Constant Scan Spool Stream Aggregate Distribute Streams Gather Streams Repartition Streams Bitmap Split Top Filter Lazy Spool Eager Spool
  • 8. Operadores ¿Qué son? 10  Todo operador funciona pidiendo filas de uno o mas hijos y devolviéndolas al que se las ha pedido  Caso especial Common Table Spool  Cada operador devuelve de 1 fila en 1 fila  *No todos -> Ver sesión Niko Neugebauer a las 13h BI
  • 10. Procesamiento lógico De una consulta 13 1. FROM 2. WHERE 3. GROUP BY 4. HAVING 5. SELECT 1. Evaluar expresiones 2. Eliminar duplicados 6. ORDER BY 7. OFFSET-FETCH/TOP
  • 11. Planes de ejecución Flechas 14 ¿Ves la diferencia en el grosor de la flecha?  Estimación un poco equivocada!  1. Analiza el grosor de las flechas 2. Compara los valores del plan estimado vs. el real
  • 12. Planes de ejecución Comparar planes 15  Fíjate en los % de consulta
  • 13. Operadores join Nested loops 16 for each row R1 in the outer table for each row R2 in the inner table if R1 joins with R2 return (R1, R2) *No confundir inner table con inner join ni outer table com outer join
  • 14. ID_Alum Nombre_Aluno ID_Curso 1Luis 2 2Ana 6 3Juan 5 4Pepe 3 5Carlos 4 6Felipe 3 7Iratxe 5 8María 4 Tabla de Alumnos: ID_Curso Nombre_Curso 1Paisajismo 2Fotografía 3Arte Clásico 4Matemáticas 5Física 6Química Tabla de Cursos: Resultado: Nombre Alumno | Nombre Curso 1-Luis |2-Fotografía 4-Pepe |3-Arte Clásico 6-Felipe |3-Arte Clásico 5-Carlos |4-Matemáticas 8-María |4-Matemáticas ...
  • 15. Operadores join Merge join 18  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  }
  • 16. Tabla de Alumnos: ID_Curso Nombre_Curso 1Paisajismo 2Fotografía 3Arte Clásico 4Matemáticas 5Física 6Química Tabla de Cursos: Resultado: ID_Aluno s Nome_Aluno ID_Curso s 1Luís 2 2Ana 6 3Juan 5 4Pepe 3 5Carlos 4 6Felipe 3 7Iratxe 5 8María 4 ID_Alum Nombre_Alumno ID_Curso 1Luís 2 4Pepe 3 6Felipe 3 5Carlos 4 8María 4 Nombre Alumno | Nombre Curso 1-Luis |2-Fotografía 4-Pepe |3-Arte Clásico 6-Felipe |3-Arte Clásico 5-Carlos |4-Matemáticas 8-María |4-Matemáticas ... Operadores join Merge join
  • 17. Operadores join Hash join 20  Ejecución en dos fases 1. Build: Cálculo de clave hash del inner 2. Prueba: Lee la outer, crea su hash y compara con hash precalculado en fase build for each row R1 in the build table { calculate hash value on R1 join key(s) insert R1 into the appropriate hash bucket } for each row R2 in the probe table { calculate hash value on R2 join key(s) for each row R1 in the corresponding hash bucket if R1 joins with R2 return (R1, R2) }
  • 18. RecomendacionesNestedLoop • No bloqueante • Eficiencia de tabla inner (arriba) • Soporta cualquier join • Util cjtos pequeños MergeJoin • No bloqueante • Datos ordenados • Solo equijoin HashJoin • Bloqueante • Tabla inner muy pequeña
  • 21. Operadores exchange Distribute Streams Hash • Los valores de filas obtienen hash y cada hilo se responsabiliza de un rango hash Round Robin • Los valores de las filas se envían al siguiente hilo de la lista Range • Determina a que hilo enviar la fila evaluando una funcion de rango sobre una columna • Rara y usada en algunos parallel index recreation Broadcast • Todas las filas se envian a todos los hilos Demand • Se usa un modo pull en lugar de push como en las otras. • Envia la fila al thread que se la está pidiendo • Aparece en tablas particionadas
  • 22. Operadores exchange Repartition streams 25 • Consume múltiples fuentes y produce multiples fuentes • No se modifican las filas • Se reducen filas si aparece un operador bitmap
  • 23. Operadores exchange Gather streams • Consume múltiples hilos y produce un único hilo • Combina resultados • Es el que mayor % de esperas suele generar
  • 24. Agenda 1. Planes de ejecución 2. Operadores 3. Cardinality estimator
  • 25. Cardinality estimator El mayor cambio en el motor “OnDisk” desde SQL Server 7.0 29 • Aporta el nº de registros involucrados en la sentencia (en cada paso) • Estima el recuento de filas afectadas • Aporta distribución de valores • Aporta info distinct count • Aporta info sobre duplicados Estimarselectividaddelpredicado WHERE
  • 26. • Se decide el algoritmo de obtención de datos • Malas interpretaciones producen • Malos planes de ejecución • Mal rendimiento de consultas Cardinality estimator El mayor cambio en el motor “OnDisk” desde SQL Server 7.0 30
  • 27. Cardinality estimator Desde SQL Server 7.0 hasta SQL Server 2012 31 Independencia • Distribución de datos independiente de unos campos a otros salvo que se indique lo contrario Uniformidad • Los valores se distribuyen uniformemente Contenido • Si algo se busca será porque existe • Si una table se cruza, será porque existe el dato en ambas • El rango menor se asume contenido en el mayorInclusión • En equijoin se assume que el valor existe ¿Acaso eso sucede?
  • 29. Conclusión 1. Ser capaces de leer los planes de ejecución 2. Conocer el funcionamiento de los operadores mas importantes 3. Conocer algunas novedades en SQL Server 2014 34
  • 30. Gracias! Enrique Catala Bañuls ecatala@solidq.com Twitter: @enriquecatala www.enriquecatala.com