有300万条记录SELECT COUNT(*) 如何提高查询效率,并提高一般查询速度

解决方案 »

  1.   

    给表建主键就行了,如果count时带有where条件,就根据where条件创建索引
      

  2.   

    全表扫描没什么办法。。提高一般查询效率无非就是建立有效的索引来满足查询,
    有机会看看 OReilly.Oracle.SQL Tuning Pocket Reference 这本书。
      

  3.   

    1, 对大表进行聚合操作是最不可优化的执行方式之一;原因很简单,oracle要不就要遍历一下table,要不就scan一下索引;
    2,300万条记录不算多,如果一条记录不是很大的话,正常的查询应该是毫秒级别的;
    3,如果你的记录较大,确实执行时间较长,并且该查询频率较高,可以考虑在insert,delete时触发当前记录行数到另外一个表中,就是说讲count分散计算好,然后查询的时候直接取计算好的数值就ok了^_^