Published on

March 28, 2018

Comprendiendo la Estimación de Cardinalidad en SQL Server

La estimación de cardinalidad juega un papel crucial en la optimización de consultas en SQL Server. Ayuda al optimizador a determinar el plan de ejecución más eficiente para una consulta dada. En esta publicación del blog, exploraremos los conceptos e ideas detrás de la estimación de cardinalidad en SQL Server.

Proceso de Estimación de Cardinalidad

El proceso de estimación de cardinalidad en SQL Server implica estimar el número de filas que devolverá cada operación en un plan de consulta. Esta estimación se basa en estadísticas e histogramas mantenidos por SQL Server en los datos subyacentes. El optimizador utiliza estas estimaciones para elegir los algoritmos de unión más eficientes, los métodos de acceso y otras operaciones.

Marco de Estimación de Cardinalidad

En el pasado, el marco de estimación de cardinalidad en SQL Server tenía algunas limitaciones. Por ejemplo, las funciones de tabla con valor múltiple de instrucción (MTVF) tenían una estimación fija de una fila. Sin embargo, en el nuevo marco de estimación de cardinalidad, la estimación para MTVFs ahora es fija en 100 filas. Este cambio permite estimaciones más precisas y puede mejorar el rendimiento de la consulta en ciertos escenarios.

Es importante tener en cuenta que el optimizador trata las MTVFs como cajas negras en cuanto a la estimación. Esto significa que el optimizador no tiene visibilidad en la lógica interna de la función y se basa únicamente en la estimación fija. En general, las funciones de tabla con valor incrustado se consideran una mejor opción porque su texto se incrusta en la consulta y se optimiza como un todo. Sin embargo, hay casos en los que las MTVFs pueden superar a las funciones incrustadas, dependiendo del escenario específico.

Variación del Modelo

En SQL Server, tienes la capacidad de controlar el modelo de estimación de cardinalidad utilizando variaciones del modelo. Por ejemplo, puedes habilitar o deshabilitar la estimación de 100 filas para MTVFs utilizando la variación del modelo habilitada por la marca de seguimiento 9488. Al experimentar con diferentes variaciones del modelo, puedes ajustar el proceso de estimación para que se ajuste mejor a la realidad de tus datos y mejorar el rendimiento de la consulta.

Conclusión

La estimación de cardinalidad es un componente crítico de la optimización de consultas en SQL Server. Comprender cómo el optimizador estima el número de filas devueltas por cada operación puede ayudarte a tomar decisiones informadas al escribir consultas y diseñar esquemas de bases de datos. Al aprovechar el nuevo marco de estimación de cardinalidad y experimentar con variaciones del modelo, puedes optimizar el rendimiento de tus consultas y mejorar la eficiencia general de la base de datos.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.