存储过程查询过慢,不知道怎么优化 help

chaojie_tan 2011-11-17 09:20:51
CREATE proc search_SO
@star_time varchar(40),
@end_time varchar(40),
@custom varchar(30)
as
select distinct account,rec_date,datename(weekday,rec_date)weeks,rh.so_no,(length*width*height*ctns) as tiji
into #so from rechead rh inner join recdtl rd on rh.so_no=rd.so_no where rec_date>=@star_time and rec_date<@end_time and account like @custom+'%'

select distinct b.account,Vehicleid,b.so_no,b.rec_date,b.weeks,sum(tiji/1000000)tiji,supplier from
(select a.account,rec_date,weeks,a.so_no,rec_no,a.tiji from
#so a
left join in2so so on a.so_no=so.so_no)b left join inhead ih on b.rec_no=ih.rec_no
group by b.account,Vehicleid,b.so_no,b.rec_date,b.weeks,supplier

以上查询我是通过临时表查询,但是太慢了,像这样表嵌套表的查询有什么方法可以优化一下,让速度再快一点呢,还有,一些日期截取,还有时期转星期.....等这些函数转换是不是也会影响到速度呢?
...全文
70 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dooloop 2011-11-17
  • 打赏
  • 举报
回复
没分了,借个位置求帮助。


如何将数据库正文字段中 <p ******> 这样的html标记批量替换为 <p> 去掉其中的样式

说明 ***** 内容不是固定格式(如<p class=""> <p id=***> <p class=**> <p id=54>等等)

求能批量操作示例的语句。
--小F-- 2011-11-17
  • 打赏
  • 举报
回复
---TRY
select
a.account,a.rec_date,a.weeks,a.a.so_no,a.tiji,sum(a.tiji/1000000)tiji,so.supplier
from
#so a
left join
in2so so
on
a.so_no=so.so_no
left join
inhead ih on a.rec_no=ih.rec_no
group by
a.account,a.so_no,a.rec_date,a.weeks,so.supplier
中国风 2011-11-17
  • 打赏
  • 举报
回复
連接表1對1,1對多,把關係列出來
中国风 2011-11-17
  • 打赏
  • 举报
回复
取消臨時表,直接用語句查
chaojie_tan 2011-11-17
  • 打赏
  • 举报
回复
你子查询的LEFT JOIN完全可以拿到外面来啊????

这是什么意思呀!
--小F-- 2011-11-17
  • 打赏
  • 举报
回复
你子查询的LEFT JOIN完全可以拿到外面来啊。

还有你已经group by 了 就不需要再DISTINCT了 这样的效率比较低。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧