sql >> Base de Datos >  >> RDS >> Database

9 mejores prácticas para escribir consultas SQL

Si está leyendo este artículo, lo más probable es que ya esté familiarizado con SQL. Sabes cómo escribir consultas SQL básicas. Hay muchas formas de ejecutar una consulta SQL para obtener los resultados deseados en su base de datos.

Sin embargo, no todas las consultas SQL se crean de la misma manera. La mayoría se puede optimizar para seguir las mejores prácticas de consultas SQL. Este artículo se centra en 9 consejos de optimización de consultas SQL. Después de leer, conocerá todos los pros y los contras de escribir consultas SQL.

1. Evite el uso de SELECT Asterisco (SELECT *)

Esta es una de las mejores prácticas de SQL más importantes. La consulta SELECT * devuelve registros de todas las columnas de la tabla. Si bien es útil en algunos casos, esta consulta a menudo produce numerosas complicaciones:

  • Es posible que no necesite recuperar todas las columnas. Sin embargo, SELECT * los devuelve todos, consumiendo un ancho de banda excesivo para ejecutar una consulta en la red.
  • Los nombres de las columnas de una tabla se pueden cambiar o eliminar, y se pueden agregar nuevas columnas. Por lo tanto, puede recibir resultados inesperados para la consulta SELECT *. Especificar los nombres de las columnas es una mejor idea.
  • SELECT * es más lento que SELECT Column Names porque este último puede usar índices de columna para devolver datos.
  • El orden de las columnas devueltas por SELECT * no está bajo su control. Sin embargo, usted define el orden deseado cuando especifica los nombres de las columnas.

2. Use las cláusulas WHERE y HAVING con precisión

Las cláusulas WHERE y HAVING en SQL tienen funcionalidades diferentes. Por lo tanto, debemos usarlos de manera diferente. Los tres principales casos de uso de WHERE y HAVING están a continuación:

  • WHERE se puede usar con consultas CRUD, es decir, SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR. Por otro lado, puede usar HAVING solo con la instrucción SELECT.
  • WHERE filtra los datos antes de cualquier operación de agregación como GROUP BY. Entonces se puede utilizar sin ninguna función de agregación. HAVING debe usarse después de la agregación.
  • Podemos usar las funciones de agregación, como SUM, MIN, MAX COUNT con la cláusula HAVING. Con la cláusula WHERE, no podemos usar funciones de agregación, a menos que esta cláusula sea parte de una subconsulta contenida en la cláusula HAVING.

3. Utilice la consulta INNER JOIN en lugar de la cláusula WHERE para unir tablas

La consulta JOIN es probablemente una de las consultas SQL más útiles. Le permite SELECCIONAR datos de varias tablas. Aunque puede usar la cláusula WHERE para obtener datos agregados de dos tablas, la cláusula WHERE es muy ineficiente.

La cláusula WHERE devuelve CROSS JOIN, que es un producto cartesiano de registros en ambas columnas. Por ejemplo, si tiene 1000 registros en la tabla A y la misma cantidad de registros en la tabla B, la cláusula WHERE creará una CROSS JOIN con 1000 x 1000 =1 000 000 registros.

Si las columnas de las tablas A y B involucradas en la cláusula WHERE tienen solo 1000 valores comunes, la cláusula WHERE devolverá 1000 registros de los 1 000 000 de registros iniciales creados por el producto cartesiano.

La cláusula INNER JOIN devuelve solo 1000 registros donde las tablas A y B tienen valores comunes en las columnas. En este caso, INNER JOIN tiene 1000 veces menos trabajo que la cláusula WHERE.

Algunas bases de datos convierten la cláusula WHERE en la consulta JOIN en la cláusula INNER JOIN en segundo plano. Sin embargo, siempre se recomienda usar INNER JOIN explícitamente en lugar de la cláusula WHERE para seguir las mejores prácticas de codificación SQL.

4. Utilice EXISTS, NOT EXISTS en lugar de IN y NOT IN en SQL

Utilice siempre EXIST sobre la cláusula IN si desea confirmar la existencia de un valor en una tabla en particular.

El proceso que ejecuta la cláusula EXISTS se detiene tan pronto como encuentra el valor requerido en la tabla. Por otro lado, la consulta IN escanea todo incluso después de encontrar el valor necesario.

De la misma manera, siempre debe usar NOT EXISTS en lugar de NOT IN cuando busque el valor que no existe en una tabla.

5. Usar operador igual (=) en lugar de LIKE Operador en SQL

Puede usar los operadores =y LIKE para hacer coincidir cadenas. La principal diferencia entre los dos es que el operador LIKE se utiliza para hacer coincidir comodines, como %, para buscar cadenas parciales, mientras que el operador de igualdad “=” busca coincidencias exactas.

Si tiene que elegir entre los dos, prefiera siempre el operador igual ("="), ya que hace uso de columnas indexadas. Por lo tanto, es más rápido que la cláusula LIKE.

6. Use la cláusula LIMIT para reducir los resultados de búsqueda

Si tiene que devolver datos de varias tablas o columnas, use la cláusula LIMIT (también conocida como cláusula TOP) para reducir los resultados de la consulta. Si hay miles de columnas, o si desea ver cómo se ven los datos solo en sus tablas, no es necesario devolver todas las filas. En su lugar, limite el número de filas devueltas por la consulta SELECT con la ayuda de la cláusula LIMIT junto con ella.

7. Usar alias de tabla al consultar varias tablas

Para evitar confusiones y evitar que las bases de datos analicen los nombres de las columnas al buscar la tabla a la que pertenecen, utilice siempre alias de tabla.

Ya tiene que usar nombres/alias de tabla si tiene los mismos nombres de columna en varias tablas, por lo que esto no aumentará su carga de trabajo.

8. Evite prefijar los procedimientos almacenados con "sp_"

Si trabajó con procedimientos almacenados, lo más probable es que antepuso el nombre del procedimiento almacenado con "sp_". Esto no es lo mejor.

SQL Server comienza buscando procedimientos almacenados con "sp_" al comienzo de sus nombres en la base de datos maestra antes de proceder a buscar en otro lugar.

Por lo tanto, puede ahorrar mucho tiempo si no coloca el prefijo "sp_" en los procedimientos almacenados. Luego, en lugar de intentar ubicar el procedimiento almacenado en la base de datos maestra, el servidor SQL verificará directamente a dbo como el propietario del procedimiento almacenado.

9. Adopte un buen estilo de redacción de consultas

Es esencial seguir las mejores prácticas para consultas SQL, como buenas prácticas de estilo al escribir consultas SQL. Preste atención a las siguientes recomendaciones para mejorar su estilo de redacción de consultas:

  • Agregue siempre comentarios a las consultas SQL. Los comentarios no solo ayudarán a otros miembros del equipo a comprender mejor sus consultas, sino que también le recordarán lo que estaba haciendo en el pasado.
  • Utilice convenciones de nomenclatura obvias. La base de datos, tablas, nombres de columnas, tablas temporales y otros nombres de variables deben ser 100 % legibles y claros.
  • Ponga sangría a sus consultas siempre que sea posible. Las consultas internas deben estar sangradas una pestaña desde la izquierda. Los nombres y tipos de columna dentro de una tabla también deben estar sangrados. La sangría garantiza una apariencia más limpia y mejora la legibilidad de las consultas que se refleja en las mejores prácticas de SQL Server para consultas.

Conclusión

SQL es un lenguaje muy flexible que proporciona numerosas formas de realizar las tareas deseadas en una base de datos. Para hacer que sus aplicaciones sean más eficientes y productivas, y evitar problemas de bases de datos a largo plazo, aplique las mejores prácticas modernas de optimización de consultas SQL para escribir sus consultas. Estos métodos lo ayudan a acelerar el ajuste del rendimiento en SQL, eliminar rutinas innecesarias y hacer que todo su trabajo sea más conciso y transparente.

Leer también

22 ingeniosos ejemplos de índice SQL para acelerar sus consultas