楼主: xuqingwei

表很小的时候,究竟走全表扫描还是走索引?

[复制链接]
论坛徽章:
2
2010广州亚运会纪念徽章:壁球
日期:2010-11-22 15:43:03ITPUB官方微博粉丝徽章
日期:2011-08-29 16:56:19
11#
 楼主| 发表于 2011-6-14 10:14 | 只看该作者

回复 #6 Yong Huang 的帖子

大表的情况我试过的,返回少数行走索引,返回多行走全表扫描。

但小表的,oracle为什么会选择这样的执行计划呢?想不通。

使用道具 举报

回复
论坛徽章:
55
马上加薪
日期:2014-02-19 11:55:142010广州亚运会纪念徽章:排球
日期:2011-04-27 13:27:19SQL大赛参与纪念
日期:2011-04-13 12:08:172011新春纪念徽章
日期:2011-02-18 11:43:332011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01生肖徽章2007版:兔
日期:2011-01-20 12:58:49
12#
发表于 2011-6-14 13:05 | 只看该作者
Truncate 试试

使用道具 举报

回复
论坛徽章:
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
13#
发表于 2011-6-15 07:11 | 只看该作者
> 但小表的,oracle为什么会选择这样的执行计划呢?想不通。

Your 10053 trace in message #8 clearly shows that an index scan has a cost of 2 while FTS has a cost of 3. So index scan is chosen.

Your actual buffer gets in the test in message #1 also shows that index access is cheaper, 6 consistent gets vs 8.

Yong Huang

使用道具 举报

回复
论坛徽章:
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
14#
发表于 2011-6-15 08:40 | 只看该作者
原帖由 xuqingwei 于 2011-6-14 09:59 发表
应该不是HWM引发的。EMP表我重建了,执行计划也是如此。


又不是只有表碎片有HWM

你自己dump一下表的HeaderBlock就知道了

使用道具 举报

回复
论坛徽章:
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
15#
发表于 2011-6-15 08:41 | 只看该作者
原帖由 xuqingwei 于 2011-6-14 10:12 发表
SCOTT@ prod> select  * from emp where empno in (7369, 7499, 7566, 7654, 7782, 7788, 7839, 7876, 7902);

9 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 1899965127

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |     9 |   288 |     2   (0)| 00:00:01 |
|   1 |  INLIST ITERATOR             |        |       |       |            |          |
|   2 |   TABLE ACCESS BY INDEX ROWID| EMP    |     9 |   288 |     2   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN          | PK_EMP |     9 |       |     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------

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

   3 - access("EMPNO"=7369 OR "EMPNO"=7499 OR "EMPNO"=7566 OR "EMPNO"=7654 OR
              "EMPNO"=7782 OR "EMPNO"=7788 OR "EMPNO"=7839 OR "EMPNO"=7876 OR "EMPNO"=7902)


Statistics
----------------------------------------------------------
          1  recursive calls
          0  db block gets
         19  consistent gets
          0  physical reads
          0  redo size
       1201  bytes sent via SQL*Net to client
        385  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          9  rows processed


这个列是否收集了直方图信息?

使用道具 举报

回复
招聘 : Java研发
论坛徽章:
71
马上加薪
日期:2014-02-19 11:55:14蜘蛛蛋
日期:2012-12-26 18:16:01茶鸡蛋
日期:2012-11-16 08:12:48ITPUB 11周年纪念徽章
日期:2012-10-09 18:05:07奥运会纪念徽章:网球
日期:2012-08-23 14:58:08奥运会纪念徽章:沙滩排球
日期:2012-07-19 17:28:14版主2段
日期:2012-07-07 02:21:02咸鸭蛋
日期:2012-03-23 18:17:482012新春纪念徽章
日期:2012-02-13 15:13:512012新春纪念徽章
日期:2012-02-13 15:13:51
16#
发表于 2011-6-16 10:43 | 只看该作者
Table: EMP  Alias: EMP
    #Rows: 14  #Blks:  5  AvgRowLen:  40.00

使用道具 举报

回复
论坛徽章:
2
数据库板块每日发贴之星
日期:2011-07-24 01:01:01
17#
发表于 2011-6-17 12:24 | 只看该作者
你建索引了就走索引,你们建就全表扫描。至于优化你看他们的,都有道理

使用道具 举报

回复
论坛徽章:
2
2010广州亚运会纪念徽章:壁球
日期:2010-11-22 15:43:03ITPUB官方微博粉丝徽章
日期:2011-08-29 16:56:19
18#
 楼主| 发表于 2011-6-17 13:12 | 只看该作者

回复 #15 sundog315 的帖子

直方图收集过的。

就是因为这个表很简单,索引、统计信息也都存在,查询也很简单。

总共表有14行,占5个block。

执行计划就是不走全表扫描。

各位在自己的测试机上也试试看,如果走全表扫描,把10053贴出来,看看和我的有哪里不同?

[ 本帖最后由 xuqingwei 于 2011-6-17 13:14 编辑 ]

使用道具 举报

回复
论坛徽章:
2
ITPUB官方微博粉丝徽章
日期:2011-06-29 09:48:25ITPUB十周年纪念徽章
日期:2011-11-01 16:26:59
19#
发表于 2011-6-21 19:36 | 只看该作者
CBO模式下,oracle会根据cost去判断,选择更小的cost去执行,不一定小表就一定是full access!

使用道具 举报

回复
论坛徽章:
1
数据库板块每日发贴之星
日期:2009-07-05 01:01:02
20#
发表于 2011-6-22 17:43 | 只看该作者
原帖由 sundog315 于 2011-6-14 09:34 发表
虽然表只有14条记录,但高水位标志有可能不是1个块,而是多个块,尤其是在ASSM表空间中

而全表扫描是要扫描高水位标志之下的所有块的,可有可能拼不过索引扫描


我觉得这个有道理,可能需要扫描的数据块比较多

使用道具 举报

回复

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

本版积分规则 发表回复

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