http://www.itpub.net/thread-421134-1-1.html

这是有CBO根据执行计划的成本决定的

exec dbms_stats.gather_table_stats(ownname='test',tabname=>'dept',cascade=>true);

用/*+ index(table_name index_name) */的HINT来强制走索引。
如:select /*+ index(emp pk_emp) */ from emp where empno=7934;

前提是你要了解应用,知道哪些语句走索引比较高效,否则效果适得其反。

===========

http://space.itpub.net/519536/viewspace-612715

查看( 421 ) / 评论( 6 ) / 评分( 5 / 0 )
伟大的Oracle SQL优化器可以判断出在某些情况下,使用全表扫描比使用索引扫描能更快的得到数据结果。
有没有想过,她是怎么做到的呢?
背后的原理是什么呢?

举一个非常好理解的场景(scenario:通过索引读取表中20%的数据)解释一下这个有趣的概念

假设一张表含有10万行数据--------100000行
我们要读取其中20%(2万)行数据----20000行
表中每行数据大小80字节----------80bytes
数据库中的数据块大小8K----------8000bytes
所以有以下结果:
每个数据块包含100行数据---------100行
这张表一共有1000个数据块--------1000块

上面列出了一系列浅显易懂的数据,我们挖掘一下这些数据后面的故事:

通过索引读取20000行数据 = 约20000个table access by rowid = 需要处理20000个块来执行这个查询
但是,请大家注意:整个表只有1000个块!
所以:如果按照索引读取全部的数据的20%相当于将整张表平均读取了20次!!So,这种情况下直接读取整张表的效率会更高。很幸运,Oracle也是这么想的:)

-- The End --

表里有索引,为什么还都是全表扫描?相关推荐

  1. mysql limit会扫描全表_为什么用了limit还会进行全表扫描?

    你的位置: 问答吧 -> PHP -> 问题详情 为什么用了limit还会进行全表扫描? 现有一张100万行记录的表test, 执行以下语句后: explain   select   * ...

  2. 索引法则--LIKE以%开头会导致索引失效进而转向全表扫描(使用覆盖索引解决)...

    Mysql 系列文章主页 =============== 1 准备数据 1.1 建表 DROP TABLE IF EXISTS staff; CREATE TABLE IF NOT EXISTS st ...

  3. 什么情况导致全表扫描,而不是用索引 收藏

    1.不要使用in操作符,这样数据库会进行全表扫描,  推荐方案:在业务密集的SQL当中尽量不采用IN操作符 2.not in 使用not in也不会走索引  推荐方案:用not exists或者(外联 ...

  4. oracle sql 分区查询语句_oracle11g 表分区后的查询语句如何知道是否进行了全表扫描...

    2019-05-10 回答 1. 对返回的行无任何限定条件,即没有where 子句 2. 未对数据表与任何索引主列相对应的行限定条件 例如:在city-state-zip列创建了三列复合索引,那么仅对 ...

  5. MongoDB 定位 oplog 必须全表扫描吗?

    MongoDB oplog (类似于 MySQL binlog) 记录数据库的所有修改操作,除了用于主备同步:oplog 还能玩出很多花样,比如 全量备份 + 增量备份所有的 oplog,就能实现 M ...

  6. MYSQL的全表扫描,主键索引(聚集索引、第一索引),非主键索引(非聚集索引、第二索引),覆盖索引四种不同查询的分析...

    文章出处:http://inter12.iteye.com/blog/1430144 MYSQL的全表扫描,主键索引(聚集索引.第一索引),非主键索引(非聚集索引.第二索引),覆盖索引四种不同查询的分 ...

  7. mysql没加引号导致全表扫描_mysql隐蔽的索引规则导致数据全表扫描

    索引是为了加速数据的检索,但是不合理的表结构或适应不当则会起到反作用.我们在项目中就遇到过类似的问题,两个十万级别的数据表,在做连接查询的时候,查询时间达到了7000多秒还没有查出结果. 首先说明,关 ...

  8. MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)

    MYSQL避免全表扫描 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否 ...

  9. SQL SERVER中关于OR会导致索引扫描或全表扫描的浅析

    在SQL SERVER的查询语句中使用OR是否会导致不走索引查找(Index Seek)或索引失效(堆表走全表扫描 (Table Scan).聚集索引表走聚集索引扫描(Clustered Index ...

最新文章

  1. POJ 2187 Beauty Contest( 凸包求最远点对 )
  2. VMware上安装ubuntu 13.04
  3. crt python_SecureCRT Python
  4. 【ESP8266】NONOS SDK开发,发送HTTP请求
  5. Linux vim多文件切换
  6. 深信服何朝曦:托管云为用户上云提供第三种选择
  7. 聊聊我是如何在面试别人Spring事务时“套路”对方的
  8. 专题:数据自治开放(上)
  9. 使用node的pm2管理相关进程
  10. 数十名工程师作战 5 天,阿里达摩院连夜研发智能疫情机器人
  11. 移动终端如何远程接入企业的核心系统?
  12. c++ 多线程_python要点-多线程
  13. Linux--vmlinuz、vmlinux、initrd
  14. 并行处理与体系结构_理论背景_01
  15. JDK 运行参数 JAVA -Dxxx与System.setProperty()的关系
  16. 初中高中睡前必看古诗名句
  17. Hibernate HHH000179警告和narrow proxy
  18. 考研二战,入职华为,反向调剂电子科大深圳
  19. 中国天然大豆卵磷脂市场趋势报告、技术动态创新及市场预测
  20. php 开源项目汇总

热门文章

  1. 234. Palindrome Linked List 回文链表
  2. 841. Keys and Rooms 钥匙和房间
  3. 2019\Province_C_C++_B\试题B-年号字串
  4. 10.2.3 基本属性
  5. PaddlePaddle训练营——公开课——AI核心技术掌握——第2章机器能“看”的现代技术
  6. Counterfeit Dollar
  7. 【Linux】一步一步学Linux——sudo命令(105)
  8. 【Linux】一步一步学Linux——whoami命令(96)
  9. rsync + inotify
  10. IA-32 Intel手册学习笔记(三)任务切换