Ver Mensaje Individual
  #4 (permalink)  
Antiguo 01/11/2012, 13:16
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Ordenar consulta sql. Simple ?

Hola de nuevo manya:

La teoría te dice que unir las tablas con el FROM-WHERE o con el JOIN es lo mismo, pero en la realidad no es así... algunos motores de BD tienen rutinas de optimización para el JOIN, lo que hace que sean más rápidas. Con pocos registros igual y no se nota la diferencia, pero cuando involucras muchas tablas o millones de registros las diferencias son considerables.

Además, desde mi punto de vista al utilizar JOIN's, las consultas son más "limpias" o legibles, sobre todo por el hecho de separar las condiciones de igualdad con las condiciones de filtrado... Siempre me gusta utilizar este ejemplo, observa esta consulta

Código:
SELECT 
  T1.campo1, T1.campo2, 
  T2.campo1, T2.campo2, 
  T3.campo1, T3.campo2, 
  T4.campo1, T4.campo1
FROM Tabla1 T1
INNER JOIN Tabla2 T2 ON T1.campo1 = T2.campo1 AND T1.campo2 = T2.campo2
INNER JOIN Tabla3 T3 ON T1.campo1 = T3.campo1 AND T1.campo2 = T3.campo2
INNER JOIN Tabla4 T4 ON T1.campo1 = T4.campo1 AND T1.campo2 = T4.campo2
WHERE
T1.campo1 = 'algo' AND
(T1.campo2 = 'nada' OR 
T1.id IN (1, 2, 3, 4, 5)) AND
T2.fecha BETWEEN '2012-01-01' AND CURDATE() AND 
T2.descripcion LIKE '%lo que sea'; 
Observa que las condiciones de union y las de filtros QUEDAN SEPARADAS... por lo tanto resulta más sencillo observar si falta alguna condición...

Además, dependiendo del motor de BD es posible que no puedas implementar LEFT o RIGTH JOIN si utilizas FROM-WHERE

Saludos
Leo