Chinaunix

标题: 关于count(*)速度的问题 [打印本页]

作者: zgahj    时间: 2004-02-06 18:22
标题: 关于count(*)速度的问题
我有一个表,有70万数据,用count(*) 需要20秒,
我有另外一个表,有144万数据,用count(*) 需要4分钟,
两个表都有唯一索引,我想问下是什么原因?
作者: nwx    时间: 2004-02-06 18:34
标题: 关于count(*)速度的问题
两个表要COUNT(*)都应该是全表扫描,70万的表的数据比较散,数据存储不连续,而144万的表比较连续,所以速度较快!
作者: lemon_conte    时间: 2004-02-06 20:35
提示: 作者被禁止或删除 内容自动屏蔽
作者: Fenng    时间: 2004-02-06 21:34
标题: 关于count(*)速度的问题
看看执行计划,是不是走的索引

不应该这么慢的

什么版本的数据库?
作者: biti_rainy    时间: 2004-02-07 12:42
标题: 关于count(*)速度的问题
如果索引字段是 not  null或者组合索引中不全为 null ,则

analyze table xxx compute statistics;
使得查询走cost-base
然后再执行 就使用了  非空 索引
作者: pearaep    时间: 2004-02-07 22:47
标题: 关于count(*)速度的问题
你的第2个表是否经常进行删除操作?另外,使用count(*) 不会使用索引,可以使用count(1) 或count(索引字段)替代
作者: wolfop    时间: 2004-02-08 19:40
标题: 关于count(*)速度的问题
[quote]原帖由 "pearaep"]你的第2个表是否经常进行删除操作?另外,使用count(*) 不会使用索引,可以使用count(1) 或count(索引字段)替代[/quote 发表:

???
我记得分析过count(*)和count(1)是一样的,问题是在于where后面的东西。
作者: biti_rainy    时间: 2004-02-08 20:24
标题: 关于count(*)速度的问题
原帖由 "biti_rainy" 发表:
如果索引字段是 not  null或者组合索引中不全为 null ,则

analyze table xxx compute statistics;
使得查询走cost-base
然后再执行 就使用了  非空 索引


当然经常删除或者update也可能对性能造成一定的影响
难道竟然没几个人研究过SQL 优化?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2