Join y Subquery

29/11/2005 - 09:32 por marcwentink | Informe spam
Tengo que hacer un Join de dos tablas A y B, pero B es muy muy grande.
Entonces puedo hacer:

Select * From A,B Where A.ForiegnB_Id = B.Id

Pero yo sé algo mas de tabla B, yo sé que solo uso un muy pequeña
parte de B, entonces quirero haces algo como:

Select * From A,(Select * From B Where Id IN ('Id1', 'Id2', 'Id3'))
Where A.ForiegnB_Id = B.Id

eso hago para prevenir que el systema va a hacer calculaciones
inutiles.

Pero tengo unas preguntas:

1. Eso no es ya arreglado en SQL por ejemplo cuando yo hago:

Select * From A,B Where A.ForiegnB_Id = B.Id And A.ForiegnB_Id IN
('Id1', 'Id2', 'Id3')

No el systema ya sabes que no hacer un Join de todo A con todo B?

2. Come yo llamo "B" en

Select * From A,(Select * From B Where Id IN ('Id1', 'Id2', 'Id3'))
Where A.ForiegnB_Id = B.Id

Porque no es verdad "B" pero el resultado del subquery

(Select * From B Where Id IN ('Id1', 'Id2', 'Id3')


3 Hay otras maneras para hacer lo que quiero? Un View o algo?
 

Leer las respuestas

#1 Carlos Sacristán
29/11/2005 - 09:42 | Informe spam
Prueba a hacer el JOIN normal poniendo en la cláusula WHERE los campos
por los que estás filtrando, miras el plan de ejecución y verás que el motor
lo está haciendo correctamente...


Select *
From A INNER JOIN B ON A.ForiegnB_Id = B.Id
Where Id IN ('Id1', 'Id2', 'Id3')


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

escribió en el mensaje
news:
Tengo que hacer un Join de dos tablas A y B, pero B es muy muy grande.
Entonces puedo hacer:

Select * From A,B Where A.ForiegnB_Id = B.Id

Pero yo sé algo mas de tabla B, yo sé que solo uso un muy pequeña
parte de B, entonces quirero haces algo como:

Select * From A,(Select * From B Where Id IN ('Id1', 'Id2', 'Id3'))
Where A.ForiegnB_Id = B.Id

eso hago para prevenir que el systema va a hacer calculaciones
inutiles.

Pero tengo unas preguntas:

1. Eso no es ya arreglado en SQL por ejemplo cuando yo hago:

Select * From A,B Where A.ForiegnB_Id = B.Id And A.ForiegnB_Id IN
('Id1', 'Id2', 'Id3')

No el systema ya sabes que no hacer un Join de todo A con todo B?

2. Come yo llamo "B" en

Select * From A,(Select * From B Where Id IN ('Id1', 'Id2', 'Id3'))
Where A.ForiegnB_Id = B.Id

Porque no es verdad "B" pero el resultado del subquery

(Select * From B Where Id IN ('Id1', 'Id2', 'Id3')


3 Hay otras maneras para hacer lo que quiero? Un View o algo?

Preguntas similares