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

Uso correcto del INNER JOIN

Estas en el tema de Uso correcto del INNER JOIN en el foro de SQL Server en Foros del Web. Hola a todos. Esta consulta tiene como finalidad despejar mis dudas respecto del correcto uso del inner join y sus diferentes costes de ejecución dependiendo ...
  #1 (permalink)  
Antiguo 13/05/2010, 03:56
 
Fecha de Ingreso: mayo-2010
Mensajes: 1
Antigüedad: 14 años
Puntos: 0
Uso correcto del INNER JOIN

Hola a todos. Esta consulta tiene como finalidad despejar mis dudas respecto del correcto uso del inner join y sus diferentes costes de ejecución dependiendo de la sintaxis de la query.

Veamos, tengo una tabla REQUEST con 90 registros y otra tabla ACTOR con 35 registros. Con cualquiera de las 3 consultas que pongo debajo obtengo el mismo resultado (55 registros), lo cual es correcto.

-- Opción 1
select r.request, a.actorname from
actor a inner join request r on
a.idactor = r.controllerid
where r.active = 1

-- Opción 2
select r.request, a.actorname from
request r inner join actor a on
a.idactor = r.controllerid
where r.active = 1

-- Opción 3
select r.request, a.actorname from
request r, actor a where
r.controllerid = a.idactor and
r.active = 1

Muy bien. A priori la opción 3 es la peor de todas (ver el siguiente post: http://www.forosdelweb.com/f86/inner-join-644840/), salvo que alguien me explique lo contrario. Con lo cual nos queda la opción 1 y opción 2.

He oído que en una consulta inner join se ha de realizar el lazo exterior sobre la tabla más pequeña (ACTOR en este caso). Sin embargo, y suponiendo que esto es cierto, no se cuál es el "lazo exterior". O en otras palabras, de qué lado del INNER JOIN debo colocar la tabla más pequeña.

Pero a partir de aquí agrego otro elemento a mi pregunta: el factor de bloqueo. Con este dato, entiendo, la cantidad de registros en la tabla ya no afecta tanto como el factor de bloqueo. Entonces, entre dos tablas dadas, aquella con mayor factor de bloqueo ha de actuar como lazo exterior (¿a la izquierda de inner join?). Pero, ¿cómo obtengo el factor de bloqueo?

Bueno, aquí les dejo la consulta. Espero que alguno de vosotros me pueda des-asnar :)

Saludos y gracias.

Etiquetas: correcto, join
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 16:29.