Un par de comentarios al respecto.

Si usas except estas usando ANSI y es correcto y recomendable, Sin embargo
usa todas las columnas para comparar cosa que no suele ser lo mas rapido ni
es lo que precisas.

Que tarde mas de 40 segundos puede ser debido a que agrega la comparacion
pero habria que activar Statistics IO y analizar el plan para determinar la
situacion real y el motivo de la tardanza adicional..

La cantidad de registros que insertas en el resultado es comparable a la que
tenias en 2000 ?


Por que no pruebas esta forma que deberia ser la mas eficiente.

select a.*
into dbo.Resultado
from tabla1 a
where not exists (
select *
from tabla2 b
where a.clave = b.clave
)


Asegurate de que el indice en la tabla2 por la columna clave sea unico (si
se puede) .
Que tipo de indices tienes?


--
--------------------------------
Atte.
Ing. Jose Mariano Alvarez
SQL Total Consulting




On 5/16/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

Tuve que tomar una decisión temporalmente, porque tengo que salir del
apuro:
Tomo el conjunto de claves que debo extraer con "except" y después, el
lugar de usar el Not In, uso la claúsula in:

Select a.Clave into dbo.Claves from dbo.Tabla1 a except Select b.Clavefrom
dbo.Tabla2 b

Select a.* from dbo.Tabla1 a where a.Clave in ( select clave from
dbo.Clave )

Esto tarda 01min 20seg en total en lugar de los 5 o más (ya que no
terminaba lo tuve que cortar) con el not in.
No soluciona el problema del not in, que sigue pendiente, pero por lo
menos me saca del apuro.
Saludos




-----Original Message-----
From: "Maxi Accotto" <[EMAIL PROTECTED]>
To: "Daniel Aisenberg" <[EMAIL PROTECTED]>
Date: Wed, 16 May 2007 21:19:31 -0300
Subject: [dbms] consulta en sql2005 no anda bien

Hola, con esa sola informacion no es suficiente, compara los distintos
planes de ejecucion, fijate el tema de indices, el tema de
estadistocas, has cambiado de servidor?

-----------------------------------------------------------
Microsoft MVP en SQL Server
Mentor asociado en SQLTotalConsulting
 (excelencia en servicios y consultoria  SQLServer)
Orador Culminis - Microsoft Influencier
www.sqltotalconsulting.com
-----------------------------------------------------------


El 16/05/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]>
escribió:
> en 2000 tenia:
>
> select a.* into dbo.Resultado from tabla1 a where clave not in (select
clave
> from tabla2 )
> y tardaba menos de un minuto y pico para 6 o 7 millones de filas.
>
> en 2005... es eterno...!!!**
>
> Alguien sabe qué es lo que puede estar pasando?, parece no funcionar la
> cláusula "not in"
>
> Pero ya probé también:
> select a.*
>    into dbo.Resultado
>    from dbo.Tabla1 a
>          left join dbo.Tabla2 b
>           on a.clave = b.clave
> where b.clave is null
>
> Tampoco funciona..
>
>  Como verán, trato de copiar los elementos contenidos en A y que no
estén en
> B. Tan simple como eso.
>
> Cuando hago la copia directa como sigue:
> select a.* into dbo.Resultado from dbo.Tabla1
> tarda 40 segundos para 7 millones de registros
>
> Por favor, alguna clave para solucionar este tema. Se agradece.
>
>
>


--



Responder a