如何优化查询

hanhan19830407 2008-11-16 12:11:21
有300万条记录SELECT COUNT(*) 如何提高查询效率,并提高一般查询速度
...全文
165 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
filec75 2008-11-26
  • 打赏
  • 举报
回复
友情up
47522341 2008-11-26
  • 打赏
  • 举报
回复
1, 对大表进行聚合操作是最不可优化的执行方式之一;原因很简单,oracle要不就要遍历一下table,要不就scan一下索引;
2,300万条记录不算多,如果一条记录不是很大的话,正常的查询应该是毫秒级别的;
3,如果你的记录较大,确实执行时间较长,并且该查询频率较高,可以考虑在insert,delete时触发当前记录行数到另外一个表中,就是说讲count分散计算好,然后查询的时候直接取计算好的数值就ok了^_^
wfqqwer5213 2008-11-17
  • 打赏
  • 举报
回复
300W不多,建个主键就是了!
BlueskyWide 2008-11-16
  • 打赏
  • 举报
回复
建立主关键字和索引。


[Quote=引用楼主 hanhan19830407 的帖子:]
有300万条记录SELECT COUNT(*) 如何提高查询效率,并提高一般查询速度
[/Quote]
kuaising 2008-11-16
  • 打赏
  • 举报
回复
全表扫描没什么办法。。

提高一般查询效率无非就是建立有效的索引来满足查询,
有机会看看 OReilly.Oracle.SQL Tuning Pocket Reference 这本书。
sulins 2008-11-16
  • 打赏
  • 举报
回复
没有特别好的方法。

换一个思路考虑,若不会对该表的历史数据进行删除的话,可以考虑按照记录的创建时间定期分段统计,比如按月。
需要使用的时候,只需要统计当月的记录数,再加上已计算好的历史值即可。
lexloo_x 2008-11-16
  • 打赏
  • 举报
回复
我想也只能是这样了。
icss_zhen 2008-11-16
  • 打赏
  • 举报
回复
给表建主键就行了,如果count时带有where条件,就根据where条件创建索引

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧