最近接触到海量数据库的工作,菜鸟不甚明白,想要和高手学习一二!前提:一张表有1千万条数据!问题一:每次统计记录数时,都要耗时20秒左右,用网页取数据根本打不开!
        我已经在主键上建了索引,好像没有什么明显的效果!
        请问高手们有好的建议或者方法吗?
问题二:在不用索引排序的情况下,每次取出10条很快,但是使用‘order by 索引’子句后,速度就达到让人难以忍受的地步了!
         请问高手们是怎么做的啊?
       
        欢迎大家指点!

解决方案 »

  1.   


    如果画面上必须从该表检索全部数据,可以把表作为Cache,直接在启动的时候Load到内存里去以减少数据库负担。(以后就相当于在APserver上面取结果集)
      

  2.   

    8知道你具体的业务了,其实也可以把结果预先计算出至另外一张表中了。把表格尽量加载至Cache也是好办法,8过只能短时间缓解压力了 。
      

  3.   

    对了,Explain plan也可以帮助你不少忙吧。最好把你的sql和业务这里讲清楚,大家帮你想想看
      

  4.   

    每次count * 肯定是很慢的了。不过什么业务需要这样的处理方式呢〉
    如果你查询的条件可以进行分段,例如时间或者名字按照开始字母等等,可以考虑建立分区表的存储方式。当然,如果你频繁对1000万级别的表进行update操作的话,慢也是肯定的。 是否考虑重新建立数据存储的结构?
      

  5.   

    不管什么软件,一次显示1000万条数据都不会快,而用了order by 速度慢是因为order by 是基于代价的,可以看看pga参数是不是开的够大,如果一次取出表中50%以上的记录,用order by 索引比order by 非索引字段慢。