现在在一张报表,SQL server 的数据库,主表数据大概在是四五百万条,其他表的数据在几十到一百万左右,大概有十张表,展示的字段大概有十几个,还有一两个字段是进行计算得到的,现在获取到一年的数据大概需要二十分钟,不知道用什么优化比较好,还有就是麻烦把介绍这种优化方式的连接发一下
高性能SQL查询优化取数方案-http://help.finereport.com/doc-view-1813.html
优化报表计算时间-http://help.finereport.com/doc-view-1001.html
抽数处理完后把结果保存到新表这样数据就少了
索引加了没有?
楼主这种主表和其它表格数据量都超百万的情况。正常来看即便加了索引,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形式存储在数据库中。查询时候,直接查询中间表。