如果需要报表统计,是在数据库( SQL)中完成还是导出数据完成?

2016-12-02 11:59:45 +08:00
 ebony0319

我的理解是数据库其实就是一个存储数据的地方,是为很多人查询服务的地方,如果在数据库里面做大量的数据 统计看似很简单的操作,但是可能是联结了很多的表,会使得情况变得很复杂。服务器负担非常大,查询时间很 长,所以我的建议是查询和统计分离。但是如果真的要大量统计那应该怎么才能最大的优化呢?
比如要查看一个商品的库存。很简单的就是直接去库存表直接读取,但是现在决策者要读到商品的库位(在仓库的位置),入库次数,出库次数,商品的销售统计,商品的上架统计等,这些势必会用到大量的 GROUP BY ,扫表的次数是 N 次方。这时候怎么办呢?

1252 次点击
所在节点    数据库
12 条回复
enenaaa
2016-12-02 12:10:23 +08:00
数据综合查询本来就是数据库干的活,要不然搞那么多高级 sql 特性干嘛。
怕影响其他服务就
1 、增加硬件资源
2 、在从服务器,备份服务器操作
3 、在人少的时候操作
4 、优化查询

办法很多嘛
wyntergreg
2016-12-02 12:17:54 +08:00
数据库做存储,查询用文档类查询器
akira
2016-12-02 13:37:03 +08:00
开个只读库专门处理报表统计,
如果还扛不住,就把数据导到离线 /在线数据分析系统
dexterzzz
2016-12-02 13:39:44 +08:00
oracle , sql server 有报表和分析引擎
nandaye
2016-12-02 13:48:42 +08:00
数据仓库,把业务数据都 etl 到仓库,然后仓库的数据做报表的数据基础。这是最专业的做法。你可以看一下 BI 这个概念。
ebony0319
2016-12-02 14:03:12 +08:00
@nandaye 我知道数据仓库的处理方法,只是这是一个流水活动的数据。比如说你去银行取钱,查询你当月的账单很容易,然后在那个表统计你的当月取钱次数也很容易,但是当出现联表,那表的全扫描是一个 N 次方的结果集。
nandaye
2016-12-02 15:47:56 +08:00
@ebony0319 数据仓库设计会对数据分层,从贴源层会慢慢处理到汇总层 。而你报表直接使用汇总层,不存在多表关联的问题。正规完善的报表系统都是基于数据仓库的。
tkMerkava
2016-12-02 15:52:52 +08:00
如果是传统数据库,数据量大,查询复杂的话,就需要做数据仓库, OLAP 分析
如果是简单的查询,没有 BI 分析的要求,将来也不需要建 BI 平台的话,直接就分析了
当然,如果是内存数据库,那就更直接分析了
ebony0319
2016-12-02 15:54:08 +08:00
@nandaye 好像你说的是对的,我查一下资料先。
neetrorschach
2016-12-02 16:19:09 +08:00
把常用的统计指标存成物理表,定时重新计算数据。
yan159753li
2016-12-02 19:27:51 +08:00
你需要一个 BI 软件
devinww
2016-12-03 14:18:19 +08:00
我们公司的报表是做税务方面分析的,因为涉及的数据量很大(全省或者全市全年数据),所以实现实时比较困难,所以数据都是一层一层汇总出来的,最后的汇总表只有几十万条或者几万条几千条记录性能就 OK 了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/324782

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX