查看: 4431|回复: 8

请教select count(*)的优化

[复制链接]
论坛徽章:
11
CTO参与奖
日期:2009-02-03 14:04:30鲜花蛋
日期:2012-04-28 09:12:592010广州亚运会纪念徽章:卡巴迪
日期:2011-01-28 16:58:54ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022010年世界杯参赛球队:斯洛文尼亚
日期:2010-02-03 05:31:212010年世界杯参赛球队:斯洛伐克
日期:2010-01-01 15:02:272010年世界杯参赛球队:塞尔维亚
日期:2009-12-31 09:53:35祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-08-17 01:01:022009日食纪念
日期:2009-07-22 09:30:00
发表于 2010-2-3 12:25 | 显示全部楼层 |阅读模式
SQL> explain plan for select count(UID) from SCOTT.TEST1;

Explained.

SQL> select * from table(dbms_xplan.display);

PLAN_TABLE_OUTPUT
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Plan hash value: 3425720880

-------------------------------------------------------------------------
| Id  | Operation        | Name         | Rows  | Cost (%CPU)| Time     |
-------------------------------------------------------------------------
|   0 | SELECT STATEMENT |              |     1 |    5309   (0)| 00:00:01 |
|   1 |  SORT AGGREGATE  |              |     1 |    5309       |          |
|   2 |   INDEX FAST FULL SCAN| SYS_C0068185 |     1 |     5309   (0)| 00:00:01 |
-------------------------------------------------------------------------

9 rows selected.

在uid上建了一个主键。
表里的数据量大约500万左右。
虽然走了索引快速读,但是cost值还是很高。逻辑读也很严重。表是刚刚分析的。
有没有更好的办法?
论坛徽章:
4
奥运会纪念徽章:射击
日期:2008-10-24 13:23:422010新春纪念徽章
日期:2010-03-01 11:19:072010数据库技术大会纪念徽章
日期:2010-05-13 09:34:23ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15
发表于 2010-2-3 13:17 | 显示全部楼层
你这个句子没有限制条件. 走主键是最快的了.

使用道具 举报

回复
论坛徽章:
281
2015年新春福章
日期:2015-03-06 11:57:312012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-01-04 11:51:22蛋疼蛋
日期:2011-12-29 07:37:22迷宫蛋
日期:2011-12-26 14:19:41茶鸡蛋
日期:2011-11-17 09:20:52茶鸡蛋
日期:2011-11-10 22:42:38ITPUB十周年纪念徽章
日期:2011-11-01 16:21:15茶鸡蛋
日期:2011-10-24 09:48:48ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47
发表于 2010-2-3 13:47 | 显示全部楼层
刚分析过?good,试试这样:
select num_rows from user_tables where table_name='TEST1'

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53奥运会纪念徽章:羽毛球
日期:2008-06-23 12:00:05奥运会纪念徽章:柔道
日期:2008-07-04 09:42:36奥运会纪念徽章:皮划艇激流回旋
日期:2008-08-12 14:50:402010新春纪念徽章
日期:2010-03-01 11:19:07
发表于 2010-2-3 14:03 | 显示全部楼层
看看这个索引多大。

select blocks, bytes/1024/1024 as Msize
from user_segments
where segment_name='SYS_C0068185';

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
发表于 2010-2-3 16:20 | 显示全部楼层
原帖由 junsansi 于 2010-2-3 13:47 发表
刚分析过?good,试试这样:
select num_rows from user_tables where table_name='TEST1'

够狠!!!

使用道具 举报

回复
论坛徽章:
2
2011新春纪念徽章
日期:2011-02-18 11:43:34ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:32
发表于 2010-2-3 16:41 | 显示全部楼层
加并行,试试

使用道具 举报

回复
论坛徽章:
11
CTO参与奖
日期:2009-02-03 14:04:30鲜花蛋
日期:2012-04-28 09:12:592010广州亚运会纪念徽章:卡巴迪
日期:2011-01-28 16:58:54ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022010年世界杯参赛球队:斯洛文尼亚
日期:2010-02-03 05:31:212010年世界杯参赛球队:斯洛伐克
日期:2010-01-01 15:02:272010年世界杯参赛球队:塞尔维亚
日期:2009-12-31 09:53:35祖国60周年纪念徽章
日期:2009-10-09 08:28:00数据库板块每日发贴之星
日期:2009-08-17 01:01:022009日食纪念
日期:2009-07-22 09:30:00
 楼主| 发表于 2010-2-3 19:41 | 显示全部楼层
原帖由 junsansi 于 2010-2-3 13:47 发表
刚分析过?good,试试这样:
select num_rows from user_tables where table_name='TEST1'



三思兄,你这是在开玩笑了。
呵呵,你敢这样用吗

使用道具 举报

回复
论坛徽章:
11
数据库板块每日发贴之星
日期:2007-10-10 01:04:092010新春纪念徽章
日期:2010-01-04 08:33:08祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:马
日期:2009-04-12 17:19:242009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:猪
日期:2008-05-06 11:10:422008新春纪念徽章
日期:2008-02-13 12:43:03生肖徽章2007版:鼠
日期:2008-01-02 17:35:53授权会员
日期:2007-11-02 16:47:52ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44
发表于 2010-2-4 03:12 | 显示全部楼层
原帖由 orain 于 2010-2-3 19:41 发表



三思兄,你这是在开玩笑了。
呵呵,你敢这样用吗



如果刚分析过,并且没有进行数据改变操作,还是可以用的。

使用道具 举报

回复
论坛徽章:
86
2015中国数据库技术大会纪念徽章
日期:2015-04-24 16:04:24马上有车
日期:2014-02-19 11:55:14马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11优秀写手
日期:2013-12-18 09:29:11日产
日期:2013-10-17 08:44:39马自达
日期:2013-08-26 16:28:022013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-23 16:55:51马上有房
日期:2014-02-19 11:55:14
发表于 2010-2-4 07:50 | 显示全部楼层
原帖由 likaiabc 于 2010-2-4 03:12 发表



如果刚分析过,并且没有进行数据改变操作,还是可以用的。


关键这个帖子的题目是优化啊,呵呵,如果只取一回的话,不用优化也可以的吧。

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 
京ICP备09055130号-4  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表