笔者在生产环境中的某张表里面目前数据量已经达到了20多亿,由于目前在数据仓库的建设初期,还未十分完善,因此在业务中的数据大盘的报表里面大量的使用了count操作,并且创建表的时候使用了日期作为分区,但是查询还是很慢,相信很多同学都会遇到这样的情况。那怎么办呢?
最后我们的解决办法是:
1、在单表里面插入一个num的字段,类型是tinyint,默认值给的1,在数据插入的时候,这个字段不去动他。这样子每一行都会有这样一个字段,并且都是默认值为1。
2、我们创建一个物化视图,字段主要包含查询的字段和这个num。
3、此时业务中我们不再使用select count 进行查询,而是使用select sum替代,之前20多亿的数据查询的时候一条sql需要跑3分多钟,现在直接1秒内就完成了查询。
还没有评论,来说两句吧...