Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 SQLserver子查询的性能问题_Sql Server 2008 - Fatal编程技术网

Sql server 2008 SQLserver子查询的性能问题

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

我正在做一个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 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条款,没有必要的括号来执行操作符排序,这可能是你问题的根源。多谢了,这或多或少是我需要的