请教一个初级问题

[复制链接]
查看11 | 回复6 | 2015-3-4 14:43:43 | 显示全部楼层 |阅读模式
select count(*) from Table1;
当表Table1只有几万个记录时速度很快,但是当表Table1有上百万个数据时,速度很慢,特别是当表中有BLOB字段时。
想请教一下运行
select count(*) from Table1;
时ORACLE后台的执行机制,以及相关的影响因素,
谢谢!
回复

使用道具 举报

千问 | 2015-3-4 14:43:43 | 显示全部楼层
select count(field1) from table1
只取其中一个字段试试。
回复

使用道具 举报

千问 | 2015-3-4 14:43:43 | 显示全部楼层
在有索引的列上求合计会有一个好的速度
回复

使用道具 举报

千问 | 2015-3-4 14:43:43 | 显示全部楼层
select count(1) from table1
回复

使用道具 举报

千问 | 2015-3-4 14:43:43 | 显示全部楼层
我在小数据下测试过,现在暂时没有这么大的数据量
count(*) 和 count(field) field是索引字段,两个的效果是一样,count(*)是ORACLE也会去利用索引列或主见列来统计或随便找一列,如果他更快的话。100MS
而count(field2) 非索引列,反而更小90MS,可能是不利用索引更快,在小数据情况下,一般大数据量后,应该就会边大了。
机器没有利用读入缓冲区的机会,每次都是重新启动机器的才执行的
select count(lswlzd_wlbh) from lswlzd 100
select count(lswlzd_wlmc) from lswlzd 90
select count(*) from lswlzd
100
lswlzd-wlbh 是唯一索引列
你的数据量这么大,应该考虑利用索引的列,应该更快!
回复

使用道具 举报

千问 | 2015-3-4 14:43:43 | 显示全部楼层
3000条数据
回复

使用道具 举报

千问 | 2015-3-4 14:43:43 | 显示全部楼层
谢谢大家。
斑竹在吗?能否给个更详细的解释和解决的方法?
先谢过。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行