查看: 4073|回复: 20

SQL优化,请大家帮忙看看

[复制链接]
认证徽章
论坛徽章:
89
生肖徽章2007版:鼠
日期:2009-03-10 21:19:05生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2009-10-14 09:31:39生肖徽章2007版:龙
日期:2009-03-10 21:14:14生肖徽章2007版:蛇
日期:2009-03-16 10:41:01生肖徽章2007版:马
日期:2009-10-21 16:45:13生肖徽章2007版:羊
日期:2009-03-24 07:32:42生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
发表于 2009-7-17 12:20 | 显示全部楼层 |阅读模式
SQL> select count(distinct T801.USER_NAME) as c1,
  2       T629.PROVINCE as c2
  3  from
  4       W_DISTRICT_D T629 /* Dim_W_DISTRICT_D */ ,
  5       W_STUDY_CREDIT_F T801 /* F_W_STUDY_CREDIT_F */
  6  where  ( T629.ROW_WID = T801.DISTRICT_WID  )
  7  group by T629.PROVINCE;

已选择33行。

已用时间:  00: 00: 32.25

执行计划
----------------------------------------------------------
Plan hash value: 1906896352

----------------------------------------------------------------------------------------
| Id  | Operation           | Name             | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |                  |    36 |   972 | 25435   (6)| 00:05:06 |
|   1 |  SORT GROUP BY      |                  |    36 |   972 | 25435   (6)| 00:05:06 |
|*  2 |   HASH JOIN         |                  |  4745K|   122M| 24619   (3)| 00:04:56 |
|   3 |    TABLE ACCESS FULL| W_DISTRICT_D     |  3395 | 44135 |     6   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| W_STUDY_CREDIT_F |  4801K|    64M| 24529   (3)| 00:04:55 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("T629"."ROW_WID"="T801"."DISTRICT_WID")


统计信息
----------------------------------------------------------
         29  recursive calls
          3  db block gets
     109115  consistent gets
      81276  physical reads
          0  redo size
       1257  bytes sent via SQL*Net to client
        407  bytes received via SQL*Net from client
          4  SQL*Net roundtrips to/from client
          0  sorts (memory)
          1  sorts (disk)
         33  rows processed

where条件里的字段有索引,但就算我加了索引提示也不走,这是为什么?请各位指点
认证徽章
论坛徽章:
89
生肖徽章2007版:鼠
日期:2009-03-10 21:19:05生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2009-10-14 09:31:39生肖徽章2007版:龙
日期:2009-03-10 21:14:14生肖徽章2007版:蛇
日期:2009-03-16 10:41:01生肖徽章2007版:马
日期:2009-10-21 16:45:13生肖徽章2007版:羊
日期:2009-03-24 07:32:42生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
发表于 2009-7-17 12:20 | 显示全部楼层
W_STUDY_CREDIT_F T801 这张表差不多有400w多万条的记录

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-7-17 12:35 | 显示全部楼层
原帖由 nw5452 于 2009-7-17 12:20 发表
SQL> select count(distinct T801.USER_NAME) as c1,
  2       T629.PROVINCE as c2
  3  from
  4       W_DISTRICT_D T629 /* Dim_W_DISTRICT_D */ ,
  5       W_STUDY_CREDIT_F T801 /* F_W_STUDY_CREDIT_F */
  6  where  ( T629.ROW_WID = T801.DISTRICT_WID  )
  7  group by T629.PROVINCE;

已选择33行。

已用时间:  00: 00: 32.25

执行计划
----------------------------------------------------------
Plan hash value: 1906896352

----------------------------------------------------------------------------------------
| Id  | Operation           | Name             | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT    |                  |    36 |   972 | 25435   (6)| 00:05:06 |
|   1 |  SORT GROUP BY      |                  |    36 |   972 | 25435   (6)| 00:05:06 |
|*  2 |   HASH JOIN         |                  |  4745K|   122M| 24619   (3)| 00:04:56 |
|   3 |    TABLE ACCESS FULL| W_DISTRICT_D     |  3395 | 44135 |     6   (0)| 00:00:01 |
|   4 |    TABLE ACCESS FULL| W_STUDY_CREDIT_F |  4801K|    64M| 24529   (3)| 00:04:55 |
----------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("T629"."ROW_WID"="T801"."DISTRICT_WID")


统计信息
----------------------------------------------------------
         29  recursive calls
          3  db block gets
     109115  consistent gets
      81276  physical reads
          0  redo size
       1257  bytes sent via SQL*Net to client
        407  bytes received via SQL*Net from client
          4  SQL*Net roundtrips to/from client
          0  sorts (memory)
          1  sorts (disk)
         33  rows processed

where条件里的字段有索引,但就算我加了索引提示也不走,这是为什么?请各位指点


为什么要走索引? 如果400万的数据里, 有200万是匹配的, 还要走索引吗?

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-7-17 12:36 | 显示全部楼层
原帖由 nw5452 于 2009-7-17 12:20 发表
W_STUDY_CREDIT_F T801 这张表差不多有400w多万条的记录


要用上索引, 得这样建, 对该表的 T801.DISTRICT_WID, USER_NAME 建复合索引.

使用道具 举报

回复
论坛徽章:
12
生肖徽章2007版:鸡
日期:2008-01-02 17:35:53奥运会纪念徽章:篮球
日期:2008-04-23 12:45:09生肖徽章2007版:兔
日期:2008-10-13 10:06:35ITPUB8周年纪念徽章
日期:2009-09-27 10:21:21祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:19:50ITPUB9周年纪念徽章
日期:2010-10-08 09:31:22ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:152013年新春福章
日期:2013-02-25 14:51:24
发表于 2009-7-17 12:37 | 显示全部楼层
Attention!

感觉这条语句怪怪的!

使用道具 举报

回复
认证徽章
论坛徽章:
89
生肖徽章2007版:鼠
日期:2009-03-10 21:19:05生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2009-10-14 09:31:39生肖徽章2007版:龙
日期:2009-03-10 21:14:14生肖徽章2007版:蛇
日期:2009-03-16 10:41:01生肖徽章2007版:马
日期:2009-10-21 16:45:13生肖徽章2007版:羊
日期:2009-03-24 07:32:42生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
发表于 2009-7-17 13:07 | 显示全部楼层
原帖由 ZALBB 于 2009-7-17 12:36 发表


要用上索引, 得这样建, 对该表的 T801.DISTRICT_WID, USER_NAME 建复合索引.


主要是现在查询要32秒,但我们要求必须在10秒以下,所以想优化下
建立复合索引可以提高效率吗?
为什么?请福哥指教下 谢谢

使用道具 举报

回复
认证徽章
论坛徽章:
89
生肖徽章2007版:鼠
日期:2009-03-10 21:19:05生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2009-10-14 09:31:39生肖徽章2007版:龙
日期:2009-03-10 21:14:14生肖徽章2007版:蛇
日期:2009-03-16 10:41:01生肖徽章2007版:马
日期:2009-10-21 16:45:13生肖徽章2007版:羊
日期:2009-03-24 07:32:42生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
发表于 2009-7-17 13:08 | 显示全部楼层
系统是32位的windows2003,内存是4G,SGA是1.6G,PGA是200M

使用道具 举报

回复
论坛徽章:
311
行业板块每日发贴之星
日期:2012-07-12 18:47:29双黄蛋
日期:2011-08-12 17:31:04咸鸭蛋
日期:2011-08-18 15:13:51迷宫蛋
日期:2011-08-18 16:58:25紫蛋头
日期:2011-08-31 10:57:28ITPUB十周年纪念徽章
日期:2011-09-27 16:30:47蜘蛛蛋
日期:2011-10-20 15:51:25迷宫蛋
日期:2011-10-29 11:12:59ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41鲜花蛋
日期:2011-11-09 20:33:30
发表于 2009-7-17 13:12 | 显示全部楼层
原帖由 nw5452 于 2009-7-17 13:07 发表


主要是现在查询要32秒,但我们要求必须在10秒以下,所以想优化下
建立复合索引可以提高效率吗?
为什么?请福哥指教下 谢谢


要查的信息都在索引上, 不用读取表了, 对了, 那个表也要这样建 T629(ROW_WID,PROVINCE)

使用道具 举报

回复
论坛徽章:
136
ITPUB年度最佳技术回答奖
日期:2010-06-12 13:17:14现代
日期:2013-10-02 14:53:59路虎
日期:2013-11-22 12:26:182014年新春福章
日期:2014-02-18 16:42:02马上有房
日期:2014-02-18 16:42:02马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:14马上加薪
日期:2014-02-19 11:55:14
发表于 2009-7-17 13:24 | 显示全部楼层
32位的sga居然设置到1.6g,这个语句会经常查吗

使用道具 举报

回复
认证徽章
论坛徽章:
89
生肖徽章2007版:鼠
日期:2009-03-10 21:19:05生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2009-10-14 09:31:39生肖徽章2007版:龙
日期:2009-03-10 21:14:14生肖徽章2007版:蛇
日期:2009-03-16 10:41:01生肖徽章2007版:马
日期:2009-10-21 16:45:13生肖徽章2007版:羊
日期:2009-03-24 07:32:42生肖徽章2007版:猴
日期:2008-01-02 17:35:53生肖徽章2007版:鸡
日期:2008-01-02 17:35:53
发表于 2009-7-17 13:33 | 显示全部楼层
原帖由 棉花糖ONE 于 2009-7-17 13:24 发表
32位的sga居然设置到1.6g,这个语句会经常查吗


因为这个库是让那些做BI的人用的,所以每天都会有大量的查询要做

使用道具 举报

回复

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

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会,7折限时优惠重磅来袭!
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。

限时七折期:2019年8月31日前


----------------------------------------

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