Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

SObre lectura de consulta

Estas en el tema de SObre lectura de consulta en el foro de Bases de Datos General en Foros del Web. Hola, tego una consulta a 3 tablas. SELECT tabla1 tabla 2 tabla 3 y sus respectivas relaciones relacion1 relacion2 relacion1 quedando SELECT tabla1 tabla 2 ...
  #1 (permalink)  
Antiguo 08/03/2010, 19:50
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
SObre lectura de consulta

Hola, tego una consulta a 3 tablas.

SELECT tabla1 tabla 2 tabla 3

y sus respectivas relaciones


relacion1 relacion2 relacion1


quedando

SELECT tabla1 tabla 2 tabla 3 WHERE relacion1 relacion2 relacion1

Ahora cuando aplico filtros

campo1 = '1' and campo2 = '2'

quedando


SELECT tabla1 tabla 2 tabla 3 WHERE relacion1 relacion2 relacion1 and
campo1 = '1' and campo2 = '2'


Que es mejor :

SELECT tabla1 tabla 2 tabla 3 WHERE relacion1 relacion2 relacion1 and
campo1 = '1' and campo2 = '2'


o


SELECT tabla1 tabla 2 tabla 3 WHERE
campo1 = '1' and campo2 = '2' and relacion1 relacion2 relacion1


me pregunto, el orden de las condiciones hace que el motor SQL funcione mas lento??????
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #2 (permalink)  
Antiguo 08/03/2010, 21:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: SObre lectura de consulta

Cita:
me pregunto, el orden de las condiciones hace que el motor SQL funcione mas lento??????
No, pero puede hacer que el plan de la consulta varíe, y por consecuencia se realice por métodos distintos, algunos menos óptimos que otros.

De todos modos ninguna de tus opciones es óptima, ni canónica. Eso sería:
Código MySQL:
Ver original
  1. FROM tabla1 INNER JOIN tabla ON relacion1
  2. INNER JOIN 2 tabla 3 ON relacion2
  3. WHERE condiciones no relacionales;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/03/2010, 10:32
Avatar de nes24  
Fecha de Ingreso: julio-2005
Mensajes: 746
Antigüedad: 18 años, 9 meses
Puntos: 3
Respuesta: SObre lectura de consulta

Cita:
Iniciado por gnzsoloyo Ver Mensaje
No, pero puede hacer que el plan de la consulta varíe, y por consecuencia se realice por métodos distintos, algunos menos óptimos que otros.

De todos modos ninguna de tus opciones es óptima, ni canónica. Eso sería:
Código MySQL:
Ver original
  1. FROM tabla1 INNER JOIN tabla ON relacion1
  2. INNER JOIN 2 tabla 3 ON relacion2
  3. WHERE condiciones no relacionales;
Disculpa, me podrias dar un ejemplo real de un inner join a 4 tablas, es buena idea?
__________________
No hay nada que foros del web no sepa!!!!

Peca tanto quien presume de su belleza como de su inteligencia, ya que la brevedad de la vida aunque distorcionada siempre estara presente.
  #4 (permalink)  
Antiguo 09/03/2010, 11:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: SObre lectura de consulta

Cita:
Disculpa, me podrias dar un ejemplo real de un inner join a 4 tablas, es buena idea?
¿Necesitas realmente un ejemplo?
Eso se hace cuando tienes 4 tablas relacionadas por medio de sus respectivas FK o bien con relaciones determinadas por el modelo de datos.
SI sabes hacer un INNER JOIN, puedes encadenar todos los que quieras. El límite es la lógica de lo que se busca obtener. Lo único que tiene que tener es consistencia de relaciones:
Código MySQL:
Ver original
  1. FROM tabla1 T1
  2.     INNER JOIN tabla2 T2 ON T1.idT1 = T2.idT1
  3.     INNER JOIN tabla3 T3 ON T1.idT1 = T3.idT1
  4.     INNER JOIN tabla4 T4 ON T3.idT3 = T4.idT3
  5.     INNER JOIN tabla5 T5 ON T4.idT1 = T5.idT1
  6.     INNER JOIN tabla6 T6 ON T3.idT1 = T5.idT6;
En cuanto a que sea una buena idea, bueno, si esa dependencia forzosamente esta dada, se debe usar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: lectura
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:02.