SQL Server - otra forma?

 
Vista:

otra forma?

Publicado por eljhonb (124 intervenciones) el 15/05/2007 21:04:40
Buenas tardes, quisiera saber si en sql server es posible implementar una consulta de este tipo

Select *
From A
where A.Id Not In (Select Id From B)

Es decir, una manera más óptima de realizar esta consulta.

Existe algún transact sql que me retorne los registros de la tabla A que no están en la tabla B?

Muchas gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:otra forma?

Publicado por Isaías (3308 intervenciones) el 15/05/2007 21:30:50
¿Cual es el inconveniente con la sentencia que envias?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:otra forma?

Publicado por eljhonb (124 intervenciones) el 15/05/2007 21:49:18
Realmente no existe ningún inconveniente, es sólo que me parece que no es la manera más óptima, pues la tabla B tiene más de 1 millón de registros con una longitud promedio de 189 y la tabla A tiende a crecer exponencialmente, por lo que me parece que en el futuro podría ser demasiada lenta esta consulta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:otra forma?

Publicado por Isaias (3308 intervenciones) el 15/05/2007 23:40:45
Si ambas columnas son INDICES, la consulta se hara en segundos, por no decir milisegundos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:otra forma?

Publicado por eljhonb (124 intervenciones) el 16/05/2007 00:04:32
Ok, Efectivamente son uno de los índices que hay sobre cada una de las tablas.
Sería bueno obligar a que se usaran estos índices porque como te digo, las tablas tiene varios índices.

De todas maneras me queda la duda de si no existe una T-Sql que haga eso.. algo así como LEFT JOIN pero que tome los registros de una tabla que no estén en la otra

Muchas Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:otra forma?

Publicado por Isaías (3308 intervenciones) el 16/05/2007 18:33:26
Existe un FULL JOIN, datos que no existan, te los pondra en NULL, pero insisto, creo que la opcion que envias es la mejor.

En cuanto a INDICARLE que indice utilizar, es un graso error que muchos desarrolladores cometemos, si SQL Server, tiene la posibilidad de los ESTADISTICOS, ¿porque tratar de inventar o descubrir el hilo negro?.

Es mucho mas eficiente que SQL Server haga su trabajo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:otra forma?

Publicado por eljhonb (124 intervenciones) el 16/05/2007 20:47:26
Ok, tendré en cuenta tus recomendaciones

Muchas gracias Isaías!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar