急,oracle性能问题,红薯和各位大大快来帮帮我吧?

采姑娘的小蘑菇 发布于 2011/04/27 00:32
阅读 1K+
收藏 2

我们现在开发的系统每天数据量在1000万左右,已经做了日分区,一般查询时速度挺好的,但是只要sql语句里有count(),sum(),group by等,查询速度就非常差,请问各位前辈,有什么办法能够优化吗?急,谢谢呀!

加载中
0
w
wangcat

建议使用Oracle Explain Plan查看执行优化,然后对照结果进行优化,一般来说可能是Full Table Scan.如果是这种情况,建议建立相关索引使之出现INDEX FAST FULL SCAN.

其次不要使用count(*)...之类的, 为什么不用count(id or indexed column)? 最好养成好的习惯,不要偷懒

0
hi-alonesword
hi-alonesword

【新建表,专门存放统计数据】

既然已经做了日分区,为何不将每日的统计数据统计好,放到一个表中。

真正要统计的时候,直接从统计表中查数据即可。【可能存在同步的问题】

0
bastetwang
bastetwang

可能要等宏哥来搞了,宏哥对真正的数据库理解很深。

0
采姑娘的小蘑菇
采姑娘的小蘑菇

引用来自#3楼“邓尚俊”的帖子

【新建表,专门存放统计数据】

既然已经做了日分区,为何不将每日的统计数据统计好,放到一个表中。

真正要统计的时候,直接从统计表中查数据即可。【可能存在同步的问题】

我们已经是像您说的这样做的,现在问题是我们统计时速度很慢,怎么做好呢?

0
采姑娘的小蘑菇
采姑娘的小蘑菇

引用来自#4楼“bastetwang”的帖子

可能要等宏哥来搞了,宏哥对真正的数据库理解很深。

宏哥在哪里啊?

0
戴威
戴威

count(*)和count(id)之间的区别到底有多大和具体数据库有关吧

0
jobell
jobell

引用来自#7楼“喵了个咪”的帖子

count(*)和count(id)之间的区别到底有多大和具体数据库有关吧

一般情况下数据库会对count(*)进行优化!一般都会对应到主键上。

0
于忠达
于忠达

顺便问一下楼上几位,我们常用count(1),不知道这样做有没有问题?对性能有何影响?

0
w
wangcat

LZ不是说一般查询是正常的,加了count, sum性能就执行下降,所以最简单的办法就是对比两者的执行计划,找到原因解决就行了。

Oracle 的优化器有很复杂的规则,有时候可能觉得没影响,有时候count(*)和count(id or indexed column)执行效率会有显著变化,实际上它跟后面的where, and, like, join....是一个整体

0
马太航
马太航

不如细分业务

返回顶部
顶部