Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/02/2013, 19:10
tomibolo
 
Fecha de Ingreso: febrero-2013
Mensajes: 65
Antigüedad: 11 años, 2 meses
Puntos: 1
Respuesta: ¿Que es mejor? varias consultas, select anidados o inner joins

Te dare mis conocimientos que no los considero muy amplios pero creo que un poco te podrán ayudar. Desde ya te digo que la tercera opción es la correcta.
De todas maneras, dependiendo la cantidad de registros de cada tabla verás la diferencia de performance.

Código 1:
Primero de todo, hacer consultas separadas no es lo idea, ya que si estás trabajando desde algún leguanje web, deberás realizar 3 conexiones directas a la BD en vez de una, por lo que de por sí perderas perfomance.

Código 2:
En mi opinión, ese código es totalmente imperfomante, te hago la siguiente consulta.
¿Qué pasaría si en la tabla de solicitudes existen dos registros con id=1).
PUMM, fallaría todo, de todas maneras eso es un tema de estructura.
Pero ese query no es para nada de mi agrado.


Cóidigo 3:
Aquí esta el tema de la verdad, esa consulta esta muy bien! Pero a veces existen veces que de todas maneras esas consultas son un dolor de cabeza, y tardan muchísmo en devolver los datos ya que la cantidad de registros que existen en la tabla son muyyy grandes
Para eso te dejo un tip, hay que leer un poco acerca de los índices, ellos serán los encargados de performar aquellas consultas.

No te puedo dar una clase avanzada de índices, pero digamos que son campos claves , que le den un ordenamiento a tus registros (muy importante para acceder a los datos), ocupando + espacio en disco, y además que deben ser referscados ya que no se actualizan solos (ordenan solos).


En tu ejemplo, los índices que crearía serían los siguientes:

id_persona --> en la tabla de solicitud y persona (si el id_persona es un PK, creo que de por sí se genera el índice por default).

id_obra --> en obra y en persona.

Vuelvo a repetir, se utilizan cuando realmente existe una cantidad grande de registros que atrasan la devolución de datos. Además existen varios tips para mejorar querys, fuera de los ejemplos que citaste.

Pero bueno, quedate con el código numero 3 y todo debería andar bien.