可以用 count(*) 来实现,但速度太慢。 用关联查询的方式也可以,估计速度也不会太理想: select max(num) from (select rownum num from tablename);建议: 在表上创建一个行级触发器来监测表中记录的变化,并记录下来。 需要一个表记录这些信息(包括表中记录条数最新统计数字) 具体实现方法很多,你自己好好考虑一下吧。注意:操作回退的情况
"在表上创建一个行级触发器来监测表中记录的变化,并记录下来" 我现在就是这么干的,但这样严重影响数据库写入速度, 我的系统要求的写入速度很高的 select max(rownum) from tablename 我也试过了,速度几乎和count一样还有更好的建议吗?
select count(col_name) from tab_name 已经很快了
适当的建立一个位图索引,就可以利用索引来优化select count(*) from table_name语句,以避免全表扫描.我的一个表(oracle91)1500万条记录,没有索引时大于120秒,建了索引只用不到1秒.
用count(*)将引起full scan. select count(column_name) from a. 其中column_name是表a的索引列,这样只会相关索引的读取.
适当的建立一个位图索引,就可以利用索引来优化select count(*) from table_name语句,以避免全表扫描.我的一个表(oracle91)1500万条记录,没有索引时大于120秒,建了索引只用不到1秒. 我来试试看
通过job定时调用计算条数的存储过程把结果保存到表中这样取起来肯定快,但是实时性不强
用关联查询的方式也可以,估计速度也不会太理想:
select max(num) from (select rownum num from tablename);建议:
在表上创建一个行级触发器来监测表中记录的变化,并记录下来。
需要一个表记录这些信息(包括表中记录条数最新统计数字)
具体实现方法很多,你自己好好考虑一下吧。注意:操作回退的情况
我现在就是这么干的,但这样严重影响数据库写入速度,
我的系统要求的写入速度很高的
select max(rownum) from tablename 我也试过了,速度几乎和count一样还有更好的建议吗?
已经很快了
select count(column_name) from a.
其中column_name是表a的索引列,这样只会相关索引的读取.
我建了索引怎么也不看不出来它快呀,这个适当的位图索引怎么建立?能否赐教?
我被这个东西给搞的都没有什么脾气了
感谢感谢,这个位图索引也太快了吧.