Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/03/2010, 05:18
xorow
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 9 meses
Puntos: 1
Mejorar rendimiento SQL

Hola, he estado leyendo sobre la generación de consultas y el problema que me suele llevar cuando tengo mas de 100.000 elementos por tabla.

En primer lugar mes gustaría saber si en una consulta donde se contatenan 4 tablas por ejemplo, sería mejor el uso de LEFT JOIN o sin embargo usar condiciones dentro de la clausula WHERE como el siguiente ejemplo:

con where:
Cita:
SELECT DISTINCT(p.id), p.nombre, p.url FROM provincia p, empresa e, empresa_subcategoria es, estancia_subcategoria esc WHERE p.id_pais='$pais' AND e.provincia=p.id AND e.id=es.id_empresa AND e.activado='1' AND esc.id_subcategoria=es.id_subcategoria AND esc.id_estancia='$id_estancia'
con left join:

Cita:
SELECT DISTINCT(p.id), p.nombre, p.url
FROM provincia p
LEFT JOIN empresa e ON e.provincia=p.id
LEFT JOIN empresa_subcategoria es ON e.id=es.id_empresa
LEFT JOIN estancia_subcategoria esc ON esc.id_subcategoria=es.id_subcategoria
WHERE p.id_pais='$pais' AND e.activado='1' AND esc.id_estancia='$id_estancia'
Segun he leido lo más conveniente sería usar left join en algunas paginas, en otras dicen que es indiferente y en otras directamente que es peor el uso de left join. En cualquier caso me gustaría optimizar esta consulta al máximo.

Saludos y gracias