lunes, 10 de marzo de 2008

tunning sql

EXISTS vs DISTINCT

Departamentos que tengan empleado:

 EXISTS es una alternativa mejor, porque cuando el RDMS se da cuenta de que cuando la
subquery se cumple, no necesita seguir, y sigue con la siguiente fila.
La elección de una opción u otra, depende de la cardinalidad de los datos.
Otra diferencia entre las dos opciones radica en que en el DISTINCT la BD debe
realizar una ordenación.

IN / UNION vs OR

 IN / UNION en la mayoría de casos es preferible a OR.
Usar OR en una fila indexada causa que el optimizador haga un FAST FULL SCAN.

NOT EXIST vs NOT IN

 En un Subquery NOT IN causa una ordenación.
Reemplazarlo por un NOT EXIST puede ser mejor.

Reduciendo accesos a la BBDD


Table Joins vs EXISTS

 Join es más recomendable que Exists siempre que el número de
filas coicidentes sea alto. Por ejemplo:

 Exists es más eficiente si el número de filas coincidentes es bajo:
Por ejemplo:


------------------------------------------------------------------------------
------------------------------------------------------------------------------
--fuente: http://www.wikioracle.es/doku.php?id=oracle_tuning:tuning_sql--
------------------------------------------------------------------------------
------------------------------------------------------------------------------
http://developer.postgresql.org/pgdocs/postgres/performance-tips.html#USING-EXPLAIN
------------------------------------------------------------------------------
------------------------------------------------------------------------------

No hay comentarios: