sql >> Base de Datos >  >> Database Tools >> SSMS

Posibles pasos para mejorar el rendimiento de las consultas de SQL Server

Primero Run la query de Sql Server Management Studio y mire el plan de consulta para ver dónde está el cuello de botella. En cualquier lugar donde vea un "escaneo de tabla" o un "escaneo de índice", tiene que revisar todos los datos para encontrar lo que está buscando. Si crea índices apropiados que puedan usarse para estas operaciones, debería aumentar el rendimiento.

A continuación se enumeran algunos consejos para mejorar el rendimiento de la consulta sql...

Evite combinaciones múltiples en una sola consulta

Trate de evitar escribir una consulta SQL usando múltiples uniones que incluyan uniones externas, aplicación cruzada, aplicación externa y otras subconsultas complejas. Reduce las opciones de Optimizer para decidir el orden de unión y el tipo de unión. En ocasiones, Optimizer se ve obligado a utilizar combinaciones de bucles anidados, independientemente de las consecuencias en el rendimiento de las consultas con subconsultas o subconsultas excesivamente complejas.

Eliminar cursores de la consulta Intente eliminar los cursores de la consulta y utilice la consulta basada en conjuntos; la consulta basada en conjuntos es más eficiente que la basada en cursores. Si es necesario utilizar el cursor, evite los cursores dinámicos, ya que tiende a limitar la elección de planes disponibles para el optimizador de consultas. Por ejemplo, el cursor dinámico limita el optimizador al uso de combinaciones de bucles anidados.

Evite el uso de subconsultas escalares no correlacionadas Puede volver a escribir su consulta para eliminar la subconsulta escalar no correlacionada como una consulta separada en lugar de como parte de la consulta principal y almacenar el resultado en una variable, a la que se puede hacer referencia en la consulta principal o en una parte posterior del lote. Esto le dará mejores opciones a Optimizer, lo que puede ayudar a devolver estimaciones de cardinalidad precisas junto con un mejor plan.

Evite las funciones de valores de tabla de múltiples instrucciones (TVF) Los TVF de estados de cuenta múltiples son más costosos que los TFV en línea. SQL Server expande los TFV en línea en la consulta principal como si expandiera las vistas, pero evalúa los TVF de múltiples declaraciones en un contexto separado de la consulta principal y materializa los resultados de las múltiples declaraciones en tablas de trabajo temporales. El contexto y la mesa de trabajo separados hacen que los TVF de múltiples declaraciones sean costosos.

Cree un índice altamente selectivo La selectividad define el porcentaje de filas que califican en la tabla (número de filas que califican/número total de filas). Si la relación entre el número de filas de calificación y el número total de filas es baja, el índice es muy selectivo y es muy útil. Un índice no agrupado es más útil si la proporción es de alrededor del 5 % o menos, lo que significa que el índice puede eliminar el 95 % de las filas de la consideración. Si el índice devuelve más del 5 % de las filas de una tabla, probablemente no se utilizará; se elegirá o creará un índice diferente o se escaneará la tabla.

Posicionar una columna en un índice El orden o la posición de una columna en un índice también juega un papel vital para mejorar el rendimiento de las consultas SQL. Un índice puede ayudar a mejorar el rendimiento de la consulta SQL si los criterios de la consulta coinciden con las columnas que quedan más en la clave del índice. Como práctica recomendada, la mayoría de las columnas selectivas deben colocarse más a la izquierda en la clave de un índice no agrupado.

Eliminación de índices no utilizadosLa eliminación de índices no utilizados puede ayudar a acelerar las modificaciones de datos sin afectar la recuperación de datos. Además, debe definir una estrategia para los procesos por lotes que se ejecutan con poca frecuencia y usan ciertos índices. En tales casos, la creación de índices antes de los procesos por lotes y luego eliminarlos cuando se realizan los procesos por lotes ayuda a reducir la sobrecarga en la base de datos.

Creación y actualizaciones de estadísticas Debe ocuparse de la creación de estadísticas y las actualizaciones periódicas para las columnas calculadas y las columnas múltiples a las que se hace referencia en la consulta; el optimizador de consultas utiliza información sobre la distribución de valores en una o más columnas de estadísticas de una tabla para estimar la cardinalidad, o el número de filas, en el resultado de la consulta. Estas estimaciones de cardinalidad permiten que el optimizador de consultas cree un plan de consulta de alta calidad.

Revise sus definiciones de esquema Por último, pero no menos importante, revise las definiciones de su esquema; esté atento a si las restricciones FORIGEN KEY, NOT NULL y CEHCK apropiadas están vigentes o no. La disponibilidad de la restricción correcta en el lugar correcto siempre ayuda a mejorar el rendimiento de la consulta, como la restricción FORIGEN KEY ayuda a simplificar las uniones al convertir algunas uniones externas o semi-uniones en uniones internas y la restricción CHECK también ayuda un poco al eliminar predicados innecesarios o redundantes.

Referencia