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

Consultas equivalentes

Estas en el tema de Consultas equivalentes en el foro de SQL Server en Foros del Web. Hola tengo una duda, necesito saber si estas dos consultas son equivalentes Es que la primera tarda unos 40 segundos en ejecutarse y las segunda ...
  #1 (permalink)  
Antiguo 13/05/2010, 08:09
 
Fecha de Ingreso: junio-2002
Mensajes: 93
Antigüedad: 21 años, 10 meses
Puntos: 0
Consultas equivalentes

Hola tengo una duda, necesito saber si estas dos consultas son equivalentes
Es que la primera tarda unos 40 segundos en ejecutarse y las segunda solo uno.

Código:
SELECT top 8 importe as minima FROM pujado WHERE id_articulo=2357 AND id_cliente=4203 and importe not in
(SELECT (importe) as minima FROM pujado WHERE id_articulo=2357 GROUP BY importe HAVING Count(importe)>1) 
GROUP BY importe, id_cliente ORDER BY importe ASC

SELECT top 8 pujado.importe FROM pujado inner join 
(SELECT pujado.importe FROM pujado WHERE id_articulo=2357 GROUP BY pujado.importe HAVING Count(importe)<2) t2 
on pujado.importe = t2.importe WHERE id_articulo=2357 AND id_cliente=4203
  #2 (permalink)  
Antiguo 13/05/2010, 11:41
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 8 meses
Puntos: 39
Respuesta: Consultas equivalentes

Según las tecnicas de mejores practicas en SQL, es mejor no usar NOT IN, por eso que es mas lento el primero.
Otra cosa que veo es que HAVING no es igual al segundo, verifica eso.
Trabajar con JOINs siempre es mas rapido.
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.

Etiquetas: Ninguno
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 13:35.