为什么全表扫描成本(COST)公式里面要除以sreadtim
全表扫描的成本计算公式 如下: Cost = ( #SRds * sreadtim + #MRds * mreadtim + CPUCycles / cpuspeed ) / sreadtim 全表扫描的时候,单块读次数=0,#SRds表示单块读次数。全表扫描的成本里面,CPU消耗其实非常少,可以忽略不计,所以全表扫描的公式可以改
全表扫描的成本计算公式 如下:
Cost = ( #SRds * sreadtim + #MRds * mreadtim + CPUCycles / cpuspeed ) / sreadtim
全表扫描的时候,单块读次数=0,#SRds表示单块读次数。全表扫描的成本里面,CPU消耗其实非常少,可以忽略不计,所以全表扫描的公式可以改写为:
Cost = #MRds * mreadtim / sreadtim
#MRds 表示多块读io次数
mreadtim 表示一次多块读耗费时间
sreadtim 表示一次单块读耗费时间
全表扫描的COST意思其实就是 多块读io次数 * 多块读时间 / 单块读时间
那么为什么 全表扫描成本公式里面要除以 sreadtim呢? 我们来看一下 索引扫描的成本计算公式:
cost = blevel + celiling(leaf_blocks *effective index selectivity) + celiling(clustering_factor * effective table selectivity)
blevel 是 扫描索引 的 root到branch ---单块读
celiling(leaf_blocks *effective index selectivity) 是扫描的 也在块的个数 ---单块读
ceiling(clustering_factor*effective table selectivity) 是 通过索引的rowid回表的次数 ---单块读
那么 索引扫描的成本公式的本质含义 其实就是 单块读的 io次数
对于单表访问(什么是单表访问? 就是只select一个表),要么走全表扫描,要么走索引扫描,当然了还可以走物化视图(这个不考虑)
ORACLE 究竟是走全表扫描还是走索引扫描呢? 它是计算全表扫描的COST,计算索引扫描的COST 哪个COST消耗少就走哪个。
问题来了,为啥ORACLE计算COST能准确的判断走哪个是最优的呢? 现在我们来比较一下 全表扫描的 COST 与 索引扫描的COST
全表扫描COST 多块读io次数 * 多块读时间 / 单块读时间
索引扫描COST 单块读io次数
那么现在 我们都对 全表扫描 COST , 都对 索引扫描 COST 乘以一个 单块读时间
全表扫描COST* 单块读时间 = 多块读io次数*多块读时间 = 总的耗费时间
索引扫描COST* 单块读时间 = 单块读io次数*单块读时间 = 总的耗费时间
说白了,就是比较全表扫描与索引扫描谁 总的耗费的时间最少,就选谁。
到这里你应该看懂了吧。 不得不佩服ORACLE 设计 人员的头脑,真是牛逼。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

关于Flex布局中紫色斜线区域的疑问在使用Flex布局时,你可能会遇到一些令人困惑的现象,比如在开发者工具(d...

H5页面需要持续维护,这是因为代码漏洞、浏览器兼容性、性能优化、安全更新和用户体验提升等因素。有效维护的方法包括建立完善的测试体系、使用版本控制工具、定期监控页面性能、收集用户反馈和制定维护计划。

JavaScript 是否可在无 HTML5 环境下运行?JavaScript 引擎自身可独立运行。在浏览器环境中运行 JavaScript 依赖 HTML5,因其提供加载和执行代码所需的标准化环境。HTML5 提供的 API 和特性对现代 JavaScript 框架和库至关重要。离开 HTML5 环境,许多 JavaScript 功能难以实现或无法实现。

在Safari中使用自定义样式表的问题探讨今天我们来探讨一个关于Safari浏览器的自定义样式表应用问题。前端新手...

H5 页面制作的优势包括:轻量级体验,加载速度快,提升用户留存率。跨平台兼容性,无需针对不同平台适配,提升开发效率。灵活性和动态更新,无需审核,便于内容修改和更新。成本效益,开发成本比原生 App 低。

无法以 root 身份登录 MySQL 的原因主要在于权限问题、配置文件错误、密码不符、socket 文件问题或防火墙拦截。解决方法包括:检查配置文件中 bind-address 参数是否正确配置。查看 root 用户权限是否被修改或删除,并进行重置。验证密码是否准确无误,包括大小写和特殊字符。检查 socket 文件权限设置和路径。检查防火墙是否阻止了 MySQL 服务器的连接。

如何解决用户代理样式表导致的显示问题?在使用Edge浏览器时,项目中的一个div元素无法显示。经过查看,发�...

Bootstrap Table 乱码通常是因为页面编码与表格数据编码不一致。要解决此问题,需要确保它们一致,具体步骤包括:检查页面和表格数据编码,设置页面编码,验证编码。如果使用 UTF-8,服务器也应支持。无法解决时,可尝试使用 JavaScript 编码库。
