社区
基础和管理
帖子详情
sleect count(*) 慢!!!!!!!!!!!!
liubei611
2011-08-19 02:14:21
我select count(*) from table,300万数据, 需要15秒左右,
其他机器这个数据量只需要不到一秒?
请问我该如何优化
...全文
266
20
打赏
收藏
sleect count(*) 慢!!!!!!!!!!!!
我select count(*) from table,300万数据, 需要15秒左右, 其他机器这个数据量只需要不到一秒? 请问我该如何优化
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ksdy138141314
2011-08-21
打赏
举报
回复
count(*)会全表检查 用count(1)
新丁11111
2011-08-21
打赏
举报
回复
有索引或主键的话,将统计字段设为这两种类型的字段也可以加快速度
新丁11111
2011-08-21
打赏
举报
回复
[Quote=引用 14 楼 yjytiantang 的回复:]
select (某一字段) from table 试试。
select (*) 的话,全表扫描,太费时间了。
[/Quote]
赞同,最简单的一种优化方式
灰哥
2011-08-21
打赏
举报
回复
兄弟,你表之前是不是有很多数据,被你删除得只剩300W了?
你先把你的数据插入到一个新表吧,然后再查询新表看看。
create table newtable as select * from oldtable ;
如果还是很慢的话那就是你数据库参数或者你电脑有问题了。
其实select count(1) 与 select count(*) 是没区别的,这是大师的书籍里面看到的。
但老是有些人会说count(1)要快...
liubei611
2011-08-21
打赏
举报
回复
我这个服务器是刀片机,俩台相同的机器,一个快一个慢,俩个库的表结构完全一致,数据也一致,我怀疑是一个数据库负载太高了
lovehuazi
2011-08-20
打赏
举报
回复
建立索引是最直接的方式了,可是优化方式很多,如果是多块cpu,还可以使用parallel的方式,不过,才300百万数据,应该是pc机之类的机器吧。如果只是想看一下这个表里的条数,告诉你一个最直接的方式,
select num_rows from all_tables where tablename = 'TABLE'
yjytiantang
2011-08-20
打赏
举报
回复
select (某一字段) from table 试试。
select (*) 的话,全表扫描,太费时间了。
lyhmy
2011-08-19
打赏
举报
回复
同样的语句其他机器这个数据量只需要不到一秒,你的却长,是不是操作多的缘故啊,不过话说回来,lz,虽然数据不是很多,但还是建个索引比较方便些,
流浪歌手
2011-08-19
打赏
举报
回复
select count(1) from table.
飞过海啊lsq
2011-08-19
打赏
举报
回复
[Quote=引用 6 楼 lnuwhy 的回复:]
其他机器上的这个表有主键吧?你建个主键之后就好了
[/Quote]
..
qgbin
2011-08-19
打赏
举报
回复
索引掉了吧.
Mark_MaoHUA
2011-08-19
打赏
举报
回复
max(rownum)试试
ssqtjffcu
2011-08-19
打赏
举报
回复
没有条件不一定就不会走索引,你看一下表是不是没有主键。
yixilan
2011-08-19
打赏
举报
回复
还是主键或者索引的原因;
或者,你的主机,当前,其它用户或者表的操作多不多?如果多的话,也会影响性能。
lnuwhy
2011-08-19
打赏
举报
回复
其他机器上的这个表有主键吧?你建个主键之后就好了
cyousor
2011-08-19
打赏
举报
回复
select count(1) from table
liubei611
2011-08-19
打赏
举报
回复
更本和索引无关,我又没加条件
Diza1986
2011-08-19
打赏
举报
回复
[Quote=引用 1 楼 zftang 的回复:]
把表分析下,建个索引
[/Quote]
Rotel-刘志东
2011-08-19
打赏
举报
回复
执行计划看一下了。具体是那块许要改进的或加索引。
秋雨飘落
2011-08-19
打赏
举报
回复
把表分析下,建个索引
MYSQL索引
3、union all,in,or都可以用索引 但是推荐用 in 前缀咧索引写法 搜索相同城市的值 left (city,3) city字段存的字符串的前三个字符串的值 sel
ect
count
(*) as cnt ,left(city,8) as name form table group by pref ...
mysql 基础语法
以下为自己学习mysql 的一些笔记,以方便查询 目录 一、 ALTER的 语法 二、 表的完整性约束 三、 索引的操作(mysql 数据库支持至少 16 个索引) 四、 视图的操作 五、 触发器的操作 ...十一、...
黑马程序员 数据库一些基础使用
如果不是刻意要把相同的数据合并,别把all丢掉,如果去掉all,执行速度可能会变
慢
,因为去掉all之后,计算机差查询的时候要扫描数据是否重复。 21.数字函数 ABS():求绝对值, ceiling():舍入到最大整数,Floor...
Orcale数据库
单行函数出现在
SLE
ECT
/ WHERE 子句中。 1、日期函数 对日期值进行运算,根据用途产生日期/数值类型的结果。 ADD_MONTHS(d, n) 返回 指定日期加上月数后的 日期值 MONTHS_BETWEEN(d1, d2) 返回 两个日期间的...
MySQL学习记录 【基本操作 → 数据操作 → 高级查询 → 联合查询】 总结
排序 order by → 升序(从小到大) asc / 降序(从大到小) asc/desc
sle
ect
* from 表名 order by 列名,列名 asc/desc; – 如果不指定asc/desc排序规则,那么默认情况下使用的就是升序的排序规则 – eg:总分排名: ...
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章