Sql server 2008 SQLserver子查询的性能问题
我正在做一个sql查询,以确定哪些商品符合特定条件在4个月内没有售出,在12个月内售出2个或更少的单位,并且我尝试使用此查询来确定库存Sql server 2008 SQLserver子查询的性能问题,sql-server-2008,Sql Server 2008,我正在做一个sql查询,以确定哪些商品符合特定条件在4个月内没有售出,在12个月内售出2个或更少的单位,并且我尝试使用此查询来确定库存 select distinct(lineas.codart), articulos.codpro from lineas inner join articulos on lineas.codart=articulos.codart INNER JOIN stock ON stock.codart=lineas.codart where lineas.codart
select distinct(lineas.codart), articulos.codpro
from lineas
inner join articulos on lineas.codart=articulos.codart
INNER JOIN stock ON stock.codart=lineas.codart
where lineas.codart NOT IN(
SELECT LINEAS.CODART
FROM LINEAS
WHERE DATEDIFF("d",lineas.fecalb,getdate())<120
) or ( lineas.codart in(
select distinct(codart)
from lineas
where DATEDIFF("d",lineas.fecalb,getdate())<365 and DATEDIFF("d",lineas.fecalb,getdate())>120 and lineas.unidad<=2 )
) AND stock.stoexi>0;
但这并没有给我预期的结果,并停留50分钟进行查询
líneas表有650.000行,我认为这不正常
请原谅我的英语,谢谢你的帮助。你能试试这个吗
select distinct(lineas.codart), articulos.codpro
from lineas o
inner join articulos on lineas.codart=articulos.codart
INNER JOIN stock ON stock.codart=lineas.codart
where NOT exists (
SELECT top 1 1
FROM LINEAS i
WHERE (
(DATEDIFF("d",i.fecalb,getdate())120 and i.unidad0)
)
and o.codart = i.codart
)
)
我猜我的缩进是正确的。你应该自己花些时间把它格式化——不是每个人都有10英里宽的显示器。如果这是正确的,那么你就混合了or和And条款,没有必要的括号来执行操作符排序,这可能是你问题的根源。多谢了,这或多或少是我需要的