楼主: onunix

[原创] 请教一下关于没有使用索引的问题分析方法

[复制链接]
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期: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马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
11#
发表于 2008-7-24 18:25 | 只看该作者
没有绝对的走索引的百分比,你还忘了一个很重要的东西clustoring_factor

使用道具 举报

回复
论坛徽章:
138
19周年集字徽章-19
日期:2020-06-08 08:30:56马上加薪
日期: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马上有房
日期:2014-02-18 16:42:022014年新春福章
日期:2014-02-18 16:42:02路虎
日期:2013-11-22 12:26:18问答徽章
日期:2014-05-08 12:15:31
12#
发表于 2008-7-24 18:26 | 只看该作者
select id from test ;
这个id上有索引,id not null,如果这个表的字段很多,你是会让它走索引还是走表呢

使用道具 举报

回复
论坛徽章:
19
ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152010新春纪念徽章
日期:2010-03-01 11:20:052010年世界杯参赛球队:意大利
日期:2010-02-27 09:23:50生肖徽章2007版:蛇
日期:2009-09-17 08:36:24ITPUB元老
日期:2009-05-10 15:09:52奥运会纪念徽章:游泳
日期:2008-06-13 08:59:56生肖徽章2007版:猴
日期:2008-01-02 17:35:53金色在线徽章
日期:2007-11-11 04:03:22鲜花蛋
日期:2013-02-22 09:19:34
13#
发表于 2008-7-24 19:28 | 只看该作者
CBO是根据COST来决定执行路径,NO PERCENTAGE

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
14#
发表于 2008-7-24 19:34 | 只看该作者
赞成,如果他真的想要一个精确的门槛,那就是根据各方面因素计算出的一个总的COST,一是走索引的COST,一是走FTS的COST,哪个少就走哪个了,这也是CBO最终的计算结果,CBO都计算了,我们为什么要取代它呢。

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:20:05
15#
 楼主| 发表于 2008-7-25 15:15 | 只看该作者
......,如果你想让它走索引,可以用提示的方式(HINT),否则,还是让系统自己选吧。

根据您的建议,采用hint,sql为:
select /*+INDEX(mytable_INDEX) */  dd, sum(aa) from mytale
where end>= to_date('2008-07-31 12:00:00','yyyy-mm-dd hh24:mi:ss')
and end<= to_date('2008-08-02 00:00:00','yyyy-mm-dd hh24:mi:ss')
and begin>= to_date('2008-07-31 12:00:00','yyyy-mm-dd hh24:mi:ss') group by dd

还是没有走索引,em看到的结果如下:

数据源  游标高速缓存
捕获时间  2008-7-25 15:10:19
对方案进行语法分析  player
优化程序模式  ALL_ROWS

计划:                               行
SELECT STATEMENT
  HASH GROUP BY                           468
    TABLE ACCESS FULL                  681551

为什么hint也失效了呢?

使用道具 举报

回复
论坛徽章:
47
蒙奇·D·路飞
日期:2017-03-27 08:04:23马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11一汽
日期:2013-09-01 20:46:27复活蛋
日期:2013-03-13 07:55:232013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:03:322012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:202012新春纪念徽章
日期:2012-02-13 15:13:20
16#
发表于 2008-7-26 09:46 | 只看该作者
原帖由 onunix 于 2008-7-25 01:15 发表

根据您的建议,采用hint,sql为:
select /*+INDEX(mytable_INDEX) */  dd, sum(aa) from mytale
where end>= to_date('2008-07-31 12:00:00','yyyy-mm-dd hh24:mi:ss')
and end= to_date('2008-07-31 12:00:00','yyyy-mm-dd hh24:mi:ss') group by dd


Syntax error. The index hint has two components, table (or table alias) and then index name.

Yong Huang

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:20:05
17#
 楼主| 发表于 2008-7-28 10:22 | 只看该作者
原帖由 sqysl 于 2008-7-24 19:34 发表
赞成,如果他真的想要一个精确的门槛,那就是根据各方面因素计算出的一个总的COST,一是走索引的COST,一是走FTS的COST,哪个少就走哪个了,这也是CBO最终的计算结果,CBO都计算了,我们为什么要取代它呢。


呵呵,这一点你错了,让CBO去算,经常会搞错的,所以才需要提示。

[ 本帖最后由 onunix 于 2008-7-28 10:25 编辑 ]

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
18#
发表于 2008-7-28 10:46 | 只看该作者
有时是会错,可不是经常奥。
还有,要根据你的具体情况,配置你的系统,可以调整某些系统参数。
还有,你的系统是不是还有其他方面的问题。因为,我看到你可能也是才接触这块,有些东西不是特别熟悉,例如:你的系统没分析数据,不搞错才怪呢。

[ 本帖最后由 sqysl 于 2008-7-28 10:50 编辑 ]

使用道具 举报

回复
论坛徽章:
3
2009新春纪念徽章
日期:2009-01-04 14:52:28ITPUB9周年纪念徽章
日期:2010-10-08 09:28:51蜘蛛蛋
日期:2011-09-13 10:35:40
19#
发表于 2008-7-28 11:10 | 只看该作者
走索引不一定比直接表扫描快。
CBO执行计划也可能存在出错的地方,不过机率应好小的。
如果你能确定用索引比较快,又担心oracle不用索引,就用hint提示强制索引吧。

使用道具 举报

回复
论坛徽章:
8
2009新春纪念徽章
日期:2009-01-04 14:52:28祖国60周年纪念徽章
日期:2009-10-09 08:28:002010新春纪念徽章
日期:2010-03-01 11:07:24ITPUB9周年纪念徽章
日期:2010-10-08 09:32:25ITPUB十周年纪念徽章
日期:2011-11-01 16:23:262013年新春福章
日期:2013-02-25 14:51:24沸羊羊
日期:2015-03-04 14:51:522015年新春福章
日期:2015-03-06 11:57:31
20#
发表于 2008-7-28 11:31 | 只看该作者
楼上说的很对

使用道具 举报

回复

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

本版积分规则 发表回复

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