SQL的优化

 现在在一张报表,SQL server 的数据库,主表数据大概在是四五百万条,其他表的数据在几十到一百万左右,大概有十张表,展示的字段大概有十几个,还有一两个字段是进行计算得到的,现在获取到一年的数据大概需要二十分钟,不知道用什么优化比较好,还有就是麻烦把介绍这种优化方式的连接发一下

FineReport qaz123 发布于 2018-11-17 16:54
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
zsh331Lv8专家互助
发布于2018-11-18 10:03

高性能SQL查询优化取数方案-http://help.finereport.com/doc-view-1813.html


优化报表计算时间-http://help.finereport.com/doc-view-1001.html


  • qaz123 qaz123(提问者) 好的,我去瞅瞅
    2018-11-18 10:33 
  • zsh331 zsh331 回复 qaz123(提问者) ok...希望有所帮助~
    2018-11-18 17:39 
最佳回答
0
孤陌Lv6资深互助
发布于2018-11-17 17:02

抽数处理完后把结果保存到新表这样数据就少了

  • qaz123 qaz123(提问者) 数据量有点大,写的SQL也是很low,抽数很慢
    2018-11-17 17:15 
最佳回答
0
monvzhileiLv6初级互助
发布于2018-11-17 18:52

索引加了没有?

  • qaz123 qaz123(提问者) 试过索引和分页,效果不怎么明显,也有可能是我没设置好
    2018-11-17 19:09 
最佳回答
0
flyingsnakeLv6资深互助
发布于2018-11-18 11:28

楼主这种主表和其它表格数据量都超百万的情况。正常来看即便加了索引,sql执行时间也不会太短。


两个方案。

1、在join表前,就将过滤条件写出来。比如。

select * from (select *  表a where xxx=yyy)t1 left join (select * from 表b where xxxx=yyyy) t2 on t1.x=t2.x


2、按照一定的时间维度统计出来中间表,比如日维度、月维度 等。将中间表以实体表的i形式存储在数据库中。查询时候,直接查询中间表。

  • 5关注人数
  • 737浏览人数
  • 最后回答于:2018-11-18 11:28
    请选择关闭问题的原因
    确定 取消
    返回顶部