Cada Cliente / Usuario siempre quiere una respuesta rápida en su proceso de recuperación de datos. Por lo tanto, necesitamos diseñar una buena base de datos que proporcione el mejor rendimiento durante la manipulación de datos, lo que se traduce en el mejor rendimiento de una aplicación. Sin embargo, no hay una forma sencilla de definir el mejor rendimiento, pero podemos elegir varias formas de mejorar el rendimiento de las consultas SQL, que se engloban en varias categorías, como la creación de índices, el uso de uniones y la reescritura de una subconsulta para usar UNIONES, etc.
Como desarrollador, sabemos que cualquier consulta SQL se puede escribir de múltiples maneras, pero debemos seguir las mejores prácticas / técnicas para lograr un mejor rendimiento de la consulta. Destaco algunos de ellos a continuación:
1. Use EXISTS en lugar de IN para verificar la existencia de datos.
2. Evitar * en la instrucción SELECT. Indique el nombre de las columnas que necesita.
3. Elija el Tipo de Datos adecuado. Por ejemplo, para almacenar cadenas, use varchar en lugar del tipo de datos de texto. Utilice el tipo de datos de texto, siempre que necesite almacenar datos de gran tamaño (más de 8000 caracteres).
4. Evite nchar y nvarchar si es posible, ya que ambos tipos de datos solo toman el doble de memoria como char y varchar.
5. Evite el valor NULO en el campo de longitud fija. En caso de requerimiento de NULL, utilice el campo de longitud variable (varchar) que ocupa menos espacio para NULL.
6. Evite Tener Cláusula. Se requiere la cláusula Having si desea filtrar el resultado de una agregación.
7. Cree Índices Agrupados y No Agrupados.
8. Mantenga el índice agrupado pequeño, ya que los campos utilizados en índice agrupado también pueden usarse en índice no agrupado.
9. La mayoría de las columnas selectivas deben colocarse a la izquierda en la clave de un índice no agrupado.
10. Eliminar índices no utilizados.
11. Es mejor crear índices en columnas que tengan valores enteros en lugar de caracteres. Los valores enteros usan menos sobrecarga que los valores de caracteres.
12. Use uniones en lugar de sub-consultas.
13. Utilice expresiones WHERE para limitar el tamaño de las tablas de resultados que se crean con uniones.
14. Utilice TABLOCKX al insertar en una mesa y TABLOCK al fusionar.
15. Utilizar CON (NOLOCK) al consultar los datos de cualquier tabla.
16. Use ESTABLECER NO CONTAR y usar INTENTAR ATRAPAR para evitar la condición de bloqueo.
17. Evite los cursores, ya que el rendimiento del cursor es muy lento.
18. Utilice la variable de tabla en lugar de la tabla temporal. El uso de tablas temporales requiere interacción con la base de datos TempDb, que es una tarea que requiere tiempo.
19. Utilice UNION ALL en lugar de UNION si es posible.
20. Utilice el nombre del esquema antes del nombre de los objetos SQL.
21. Utilice el procedimiento almacenado para datos de uso frecuente y consultas más complejas.
22. Mantenga la transacción lo más pequeña posible, ya que la transacción bloquea los datos de las tablas de procesamiento y puede resultar en bloqueos.
23. Evite el prefijo » sp_ » con el nombre de procedimiento almacenado definido por el usuario porque SQL server busca primero el procedimiento definido por el usuario en la base de datos maestra y después en la base de datos de sesión actual.
24. Evite el uso de Sub-Consultas Escalares No correlacionadas. Utilice esta consulta como una consulta separada en lugar de una parte de la consulta principal y almacene la salida en una variable, a la que se puede hacer referencia en la consulta principal o en una parte posterior del lote.
25. Evite las Funciones Con Valor de Tabla de Sentencias Múltiples (TVF). Los TVF de múltiples estados son más costosos que los TVF en línea.
Feliz Aprendizaje!