数据库中的全表扫描和索引扫描
来源:互联网 发布:js动态生成表格9*9 编辑:程序博客网 时间:2024/05/16 01:36
伟大的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也是这么想的:)
有没有想过,她是怎么做到的呢?
背后的原理是什么呢?
举一个非常好理解的场景(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也是这么想的:)
阅读全文
1 0
- 数据库中的全表扫描和索引扫描
- 全表扫描和索引扫描的区别
- 全表扫描和索引扫描的区别
- oracle 全扫描和索引扫描
- 全表扫描 vs 索引
- 数据库优化之利用索引、避免全表扫描
- 一个小实验:找到优化器选择全表扫描和索引范围扫描的临界点
- 实验:找到优化器选择全表扫描和索引范围扫描的临界点
- 什么时候全表扫描比使用索引扫描能更快?
- 【索引】索引全扫描和索引快速全扫描的区别
- oracle 索引 避免全表扫描
- Oracle 索引 避免全表扫描
- mysql索引与全表扫描
- mysql 全表扫描、全索引扫描、索引覆盖(覆盖索引)
- 3.2.5 索引全扫描
- 获得全索引扫描对象
- 【索引】索引五种扫描方式至索引全扫描
- 索引_举例:IO成本:全表扫描 < 走索引
- Unity编程 欧拉角与万向节死锁(图文版)
- 用python创建线程池
- Leetcode 174. Dungeon Game
- Python中的sorted函数以及operator.itemgetter函数
- 题解——Leetcode 240. Search a 2D Matrix II 难度:Medium
- 数据库中的全表扫描和索引扫描
- 第三十九、四十天:Aurora的服务层ASL(AuroraServiceLayer)的数据传输框架分析学习
- Tomcat发布项目
- CodeForces
- lnmp忘记mysql密码怎么办?
- MVP登录+导航3页+3秒跳转
- mysql大数据的导入导出
- lombok安装及应用
- 浅析Netty实现心跳机制与断线重连