sql2005 sql文查询速度太慢,新人求助新人求助新人求助
/*
数据表如下
A 订单流程序号定义 字段:listID,sequence(序号)
B 订单计划 字段:listID,PL(工作组名称),planNum(计划量),prodate(日期)
C 订单数据 字段:listID,PL(工作组名称),proNum(生产量),sequence(序号),prodate(日期)
查询选定日期的订单信息 (还有未考虑的情况?)
1 有订单计划,有订单生产数据
2 有订单计划,无订单数据
3 无订单计划,有订单数据
查询结果
1 ListID (上面3种情况下出现的ListID)
2 PL B.PL/C.PL (出现第三种情况为C.PL)
3 Everyday_PlanNum 当日计划量 (B.planNum 按listID 和 工作组别 查询 )
4 当日生产量(序号为最大MAX(A.sequence) 的数量和sum(C.proNum) )
5 总的生产量(序号为最大MAX(A.sequence) 的数量和sum(C.proNum) )
求助: C表中数据很多,导致查询速度比较慢,求修改SQL文 新人分数不多 不好意思 */
--当日出现的ListID,工作组别
select distinct ListID,PL,Everyday_PlanNum
from
(
select B.ListID,B.PL,B.planNum as Everyday_PlanNum
from B
where B.prodate='2011-10-24'
union all
select C.ListID,C.PL,0 as Everyday_PlanNum
from c
left join
(
select B.listID,B.PL from B
where B.proDate='2011-10-24'
) planNum on (planNum.ListID=C.ListID and planNum.PL=C.PL)
where C.prodate='2011-10-24'
and planNum.PL is null
) P
--当日订单生产量
select C.ListID,C.PL
,sum(C.ProNum) as Everyday_ProNum
from C
inner join
(
select A.ListID,max(A.sequence) as sequence
from A
group by A.ListID
) SelSectionNo on (SelSectionNo.ListID=C.ListID and SelSectionNo.sequence=C.sequence)
where C.ProDate='2011-10-24'
group by C.ListID,C.LineCode
--总的生产量
select C.ListID,C.PL,
sum(C.proNum) as Sum_ProNum
from C
inner join
(
select A.ListID,max(A.sequence) as sequence
from A group by A.ListID
) SelSectionNo on (SelSectionNo.ListID=C.ListID and C.sequence=SelSectionNo.sequence)
inner join
(
select distinct ListID
from
(
select B.ListID
from B where B.prodate='2011-10-24'
union all
select C.ListID
from C where C.prodate='2011-10-24'
) B
) F on (C.ListID=C.ListID)
group by C.ListID,C.LineCode
数据表如下
A 订单流程序号定义 字段:listID,sequence(序号)
B 订单计划 字段:listID,PL(工作组名称),planNum(计划量),prodate(日期)
C 订单数据 字段:listID,PL(工作组名称),proNum(生产量),sequence(序号),prodate(日期)
查询选定日期的订单信息 (还有未考虑的情况?)
1 有订单计划,有订单生产数据
2 有订单计划,无订单数据
3 无订单计划,有订单数据
查询结果
1 ListID (上面3种情况下出现的ListID)
2 PL B.PL/C.PL (出现第三种情况为C.PL)
3 Everyday_PlanNum 当日计划量 (B.planNum 按listID 和 工作组别 查询 )
4 当日生产量(序号为最大MAX(A.sequence) 的数量和sum(C.proNum) )
5 总的生产量(序号为最大MAX(A.sequence) 的数量和sum(C.proNum) )
求助: C表中数据很多,导致查询速度比较慢,求修改SQL文 新人分数不多 不好意思 */
--当日出现的ListID,工作组别
select distinct ListID,PL,Everyday_PlanNum
from
(
select B.ListID,B.PL,B.planNum as Everyday_PlanNum
from B
where B.prodate='2011-10-24'
union all
select C.ListID,C.PL,0 as Everyday_PlanNum
from c
left join
(
select B.listID,B.PL from B
where B.proDate='2011-10-24'
) planNum on (planNum.ListID=C.ListID and planNum.PL=C.PL)
where C.prodate='2011-10-24'
and planNum.PL is null
) P
--当日订单生产量
select C.ListID,C.PL
,sum(C.ProNum) as Everyday_ProNum
from C
inner join
(
select A.ListID,max(A.sequence) as sequence
from A
group by A.ListID
) SelSectionNo on (SelSectionNo.ListID=C.ListID and SelSectionNo.sequence=C.sequence)
where C.ProDate='2011-10-24'
group by C.ListID,C.LineCode
--总的生产量
select C.ListID,C.PL,
sum(C.proNum) as Sum_ProNum
from C
inner join
(
select A.ListID,max(A.sequence) as sequence
from A group by A.ListID
) SelSectionNo on (SelSectionNo.ListID=C.ListID and C.sequence=SelSectionNo.sequence)
inner join
(
select distinct ListID
from
(
select B.ListID
from B where B.prodate='2011-10-24'
union all
select C.ListID
from C where C.prodate='2011-10-24'
) B
) F on (C.ListID=C.ListID)
group by C.ListID,C.LineCode
...全文
相关推荐
Sql Server2005 优化查询速度50个方法小结
"Sql Server2005 优化查询速度50个方法小结"Sql Server 2005 的查询速度优化是一个重要的主题,它涉及到数据库性能的多个方面。以下是一些关键点来提高查询效率:1.
sql性能优化:sql处理千百万级以上的数据提高查询速度的方法,查询速度慢怎么处理
处理百万级以上的数据提高查询速度的方法: 1.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。 2.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: ...
Sql_server2005优化查询速度51法
优化查询速度不仅能够提升数据处理效率,还能显著改善用户体验,因此掌握SQL Server 2005查询优化技巧对于维护高效稳定的数据服务至关重要。
C#VS2005+SQL 2005 航空机票订票查询系统
**SQL Server 2005**:作为微软的数据库管理系统,SQL Server 2005提供了强大的数据存储、管理和查询功能。
SQL 2005-2008查询分析器
一、SQL Server 2005查询分析器:SQL Server 2005的查询分析器是开发人员和DBA的主要工作平台,它允许用户连接到SQL Server实例,执行Transact-SQL(T-SQL


疑难问题
