Optimización de Consultas SQL: Técnicas y Operaciones Esenciales
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,17 KB
Orden de Evaluación en Consultas SQL
El orden de evaluación en las consultas SQL es fundamental para entender cómo se procesan los datos. Se evalúa en el siguiente orden:
- WHERE: Establece las filas individuales, candidatos.
- GROUP BY: Forma los grupos.
- HAVING: Selecciona los grupos a mostrar.
Operaciones de Join
Un Join se usa cuando una consulta requiere datos de más de una tabla en la base de datos.
JOIN REFLEXIVO
Es aquel que se implementa para relaciones recursivas (como una relación de "padre-hijo"). Requiere usar Aliases y lo considera como si se tratase de dos tablas separadas.
Operadores de Conjunto
Estos operadores combinan los resultados de dos o más consultas SELECT.
- UNION: Retorna todas las filas distintas recuperadas por una u otra consulta SQL.
- La variante UNION ALL no elimina los duplicados.
- INTERSECT: Retorna solo aquellas filas que son recuperadas por ambas consultas SQL a la vez.
- MINUS: Retorna todas las filas recuperadas por la primera Query que no están en las recuperadas por la segunda.
Restricciones en Operadores de Conjunto
Al usar operadores de conjunto, se deben considerar las siguientes restricciones:
- Los selects deben contener igual número de columnas.
- Las columnas correspondientes deben tener el mismo tipo de dato.
- Los duplicados se eliminan automáticamente (no se puede usar
DISTINCT
). - Los nombres de las columnas de la primera
SELECT
permanecen. ORDER BY
aparece solamente en la sentencia final.ORDER BY
por posición de columna (no nombre).- Los operadores de conjunto pueden usarse en subqueries.
- Los
SELECT
se ejecutan de arriba hacia abajo. - Múltiples operadores de conjuntos son posibles con paréntesis (si son necesarios) para alterar el orden de ejecución.
Subqueries (Subconsultas)
Una subquery es un SELECT
anidado dentro de otro que retorna resultados inmediatos.
- Se le conoce también como SUB SELECT.
- Generalmente se ejecuta primero y su salida se usa para completar la condición del
SELECT
que lo contiene (main query). - Cuando la subquery retorna un valor solamente, se puede usar un
=
para comparar. - Cuando la subquery retorna más de un valor se emplea
IN
. - En una subquery se puede comparar más de un valor.
- En ese caso, los valores deben estar siempre entre paréntesis y separados entre sí por comas.
- Dentro de la subquery deben retornarse en el mismo orden, la misma cantidad y del mismo tipo de datos.
Operadores ANY y ALL
Se pueden usar con subqueries que retornan más de una fila. Se usan en WHERE
o HAVING
junto con cualquier operador lógico (=
, <=
, <
, <>
, >
, >=
).
- ANY: Compara un valor, para cada (algún) valor retornado por la subquery.
- Ejemplo:
WHERE SAL > ANY (SELECT ...)
- NOTAS: "
= ANY
" equivale a "IN
". Cuando usaANY
frecuentemente se usaDISTINCT
para evitar duplicados. - ALL: Compara un valor con todo valor retornado por la subquery.
- Ejemplo:
WHERE SAL > ALL (SELECT ...)
Vistas
Las vistas representan de forma lógica subconjuntos de datos de una o más tablas.
Ventajas de las Vistas
- Restringe el acceso a los datos.
- Facilita consultas complejas.
- Mejora la independencia de los datos.
- Permite presentar distintas vistas de los mismos datos.
Operaciones CRUD (Create, Read, Update, Delete)
Estas operaciones son fundamentales para la manipulación de datos en una base de datos.
- INSERT: Una vez que creamos una estructura, podemos utilizarla para guardar datos en ella. Para esto usamos el comando
INSERT
, que nos permite ingresar nuevos registros a la tabla. - UPDATE: Una vez agregados los datos a la tabla, es posible que queramos o necesitemos modificar algunos. Para ello existe el comando
UPDATE
. A diferencia deINSERT
que trabaja a nivel de registros completos,UPDATE
opera a nivel de columnas. - DELETE: Es posible eliminar un registro de la tabla, usando el comando
DELETE
.
Transacciones y ROLLBACK
Si uno detecta que ha cometido un error y no desea CONSOLIDAR los cambios, tiene la posibilidad de DESHACER los cambios realizados, para ello sirve el comando ROLLBACK
.
ROLLBACK;
El comando ROLLBACK
deshace todos los cambios hasta el último COMMIT
.