|
首先要声明两个知识点:
(1)RBO&CBO。
Oracle
有两种执行优化器,一种是RBO(Rule Based Optimizer)基于规则的优化器,这种优化器是基于sql语句写法选择执行路径的;另一种是CBO(Cost Based Optimizer)基于规则的优化器,这种优化器是Oracle根据统计分析信息来选择执行路径,如果表和索引没有进行分析,Oracle将会使用RBO代替CBO;如果表和索引很久未分析,CBO也有可能选择错误执行路径,不过CBO是Oracle发展的方向,自8i版本来已经逐渐取代RBO.
(2)AUTOTRACE。
要看索引是否被使用我们要借助Oracle的一个叫做AUTOTRACE功能,它显示了sql语句的执行路径,我们能看到Oracle内部是怎么执行sql的,这是一个非常好的辅助工具,在sql调优里广泛被运用。我们来看一下怎么运用AUTOTRACE:
①
由于AUTOTRACE自动为用户指定了Execution Plan,因此该用户使用AUTOTRACE前必须已经建立了PLAN_TABLE。如果没有的话,请运行utlxplan.sql脚本(它在$ORACLE_HOME/rdbms/admin目录中)。
② AUTOTRACE
可以通过运行plustrce.sql脚本(它在$ORACLE_HOME/sqlplus/admin目录中)来设置,用sys用户登陆然后运行plustrce.sql后会建立一个PLUSTRACE角色,然后给相关用户授予PLUSTRACE角色,然后这些用户就可以使用AUTOTRACE功能了。
③ AUTOTRACE
的默认使用方法是set autotrace on,但是这方法不总是适合各种场合,特别当返回行数很多的时候。Set autotrace traceonly提供了只查看统计信息而不查询数据的功能。
SQL> set autotrace on
Execution Plan
Statistics
Hints
是Oracle提供的一个辅助用法,按字面理解就是‘提示’的意思,确实它起得作用也是提示优化器按它所提供的关键字来选择执行路径,特别适用于sql调整的时候。使用方法如下:
{DELETE|INSERT|SELECT|UPDATE} /*+ hint [text] [hint[text]]... */
具体可参考Oracle SQL Reference。 有了前面这些知识点,接下来让我们来看一下什么时候索引是不起作用的。以下列出几种情况。
(1)类型不匹配时。
SQL> create table test.testindex (a varchar(2),b number);
SQL> select /*+RULE */* FROM test.testindex where a='1';(使用基于rule的优化器,数据类型匹配的情况下)
(2)条件列包含函数但没有创建函数索引。
SQL> select /*+ RULE */* FROM test.testindex where upper(a)= 'A';(使用了函数upper()在列a上);
(3)复合索引中的前导列没有被作为查询条件。
创建一个复合索引
(4)CBO模式下选择的行数比例过大,优化器采取了全表扫描。
(5)CBO模式下表很久没分析,表的增长明显,优化器采取了全表扫描。
SQL> select * from test.testindex where a like '1%';
SQL> analyze table test.testindex compute statistics for table for all indexed c |
相关推荐
ESWA投稿全流程避坑指南:从LaTeX模板到审稿状态查询(附最新资源链接)
本文提供了一份详尽的ESWA期刊投稿全流程指南,涵盖从LaTeX模板深度适配、Cover Letter撰写,到Editorial Manager系统操作、审稿状态解析等关键环节。重点解析了投稿准备中的常见“雷区”与文件合规性要求,并分享了收到审稿意见后的高效修改与回复策略,旨在帮助研究者规避流程陷阱,提升投稿效率与成功率。
数据库索引的优缺点以及什么时候数据库索引失效
https://blog.youkuaiyun.com/u013310119/article/details/52527632 1. 什么是索引: 索引就像是书的目录,是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度。索引中包含由表或视图中的一列或多列生成的键。这些键存储在一个结构(BTree)中,使SQL可以快速有效地查找与键值关联的行。 2. 为什么要建立索引,即索引的优点: ① ...
避开封号风险!wxauto+Claude API实现微信智能客服的合规方案
本文详细介绍了如何利用wxauto和Claude API构建合规的微信智能客服系统,避免封号风险。通过技术选型对比、防封策略设计及大模型接入实践,为企业提供了一套安全高效的解决方案,特别适合中小企业在微信生态中部署AI客服。
ORACLE EXPLAIN PLAN
在ORACLE数据库中,需要对SQL语句进行优化的话需要知道其执行计划,从而针对性的进行调整.ORACLE的执行计划的获得有几种方法,下面就来总结下 1、EXPLAIN的使用 Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对
Unity游戏Mono注入实战:从反编译到功能扩展
本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。
DP83848以太网PHY芯片:自动协商与MII/RMII接口实战解析
以太网物理层(PHY)芯片是嵌入式网络通信的核心,负责数字信号与模拟信号的转换,其稳定性和兼容性直接影响系统性能。其工作原理基于IEEE标准,通过管理接口(MDC/MDIO)配置内部寄存器,实现链路速率、双工模式等关键参数的设定。这项技术的核心价值在于为工业控制、汽车电子等严苛环境提供可靠、自适应的网络连接。在实际应用中,PHY芯片通过自动协商(Auto-Negotiation)功能与对端设备智能匹配最佳通信模式,极大提升了产品的易用性。同时,其支持的MII与RMII接口为硬件设计提供了灵活性,前者是标准并
模板引擎工作原理_你不知道的搜索引擎基本工作原理
对网站做优化,目的就是提升网站关键词的排名,那么,搜索引擎为什么会给与网站关键词排名,搜索引擎对此的工作原理又是什么呢? 搜索引擎基本工作原理分为超链接分析技术与投票机制两种 超链接分析技术包括: 1.网站有高质量的内容进行更新 2.高质量的内容有高质量的链接进行推荐(友链.外链) 3.网站内容展现结构,页面属性,代码的合理性,网站是否存在单链,死链,重复链降低百度的抓取效率 投票机...
卫星轨道坐标转换:轨道六根数到经纬高(经STK验证)
a:半长轴(km)e:偏心率i:轨道倾角(度)Ω:升交点赤经(度)ω:近地点幅角(度)ν:真近点角(度)
mysql 数据连续不走索引6_学习MySQL的优化方法,工作效率大大提高
今天小编来和大家聊一聊项目中常用到的MySQL优化方法,有了这些方法,会让你的效率提升至少3倍。1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。ltype列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。lkey列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。lkey_len列,索引长度。lrows列,扫描行数。...
Navicat从入门到精通:数据库管理全攻略
本文系统梳理Navicat数据库管理工具的核心应用体系。从基础的安装与多类型数据库连接入手,详解数据库与数据表的创建、修改、删除等操作逻辑;深入数据增删改查的可视化与 SQL 语句双重操作模式,结合Excel/SQL文件的导入导出场景提供实操指南。同时覆盖数据备份恢复、跨库同步等进阶功能,以及视图、存储过程等高级应用。通过对比同类工具突出Navicat的易用性与功能性优势,并针对连接失败、字符乱码等常见问题提供解决方案,帮助读者从零基础掌握数据库全生命周期管理,提升数据操作效率与安全性。
今日指数项目之实时流数据采集【六】
实时数据采集代码
模板引擎工作原理_很少人才知道搜索引擎的工作原理,一般人不告诉他
搜索引擎的工作过程大体分三个阶段:01爬行和抓取搜索引擎蜘蛛通过跟踪链接访问网页,获得页面HTML代码存入数据库。02预处理索引程序对抓取来的页面数据进行文字提取、中文分词、索引等处理,以备排名程序调用。03排名用户输入关键词后,排名程序调用索引库数据,计算相关性,然后按定格式生成搜索结果页面。拓展蜘蛛——搜索引擎用来爬行和访问页面的程序被称为蜘蛛(spider),也叫机器人(bot)。...
Vue3 - 最新实现在线预览Excel文件(xls/xlsx)多种方案,解析打开excel电子表格支持服务器链接在线URL形式、调用后端接口获取二进制文件流、文件地址(vue3实现excel预览)
vue3,预览excel文件,xlsx,xls,vue预览Excel表格,vue在线编辑xls文件,预览和编辑,vue3如何新开一页浏览器打开查看,手机h5页面打开在线EXCEL文档,在弹框中加载预览,在指定模态框中显示,基于Vue的Excel文件预览,加载失败白屏,报错没反应,详细示例代码教程,文件预览下载,nuxt3,excel预览插件,xlsx插件预览,纯前端vue中预览excel表格,接口调用的文件如何预览查看,文件url地址,vue移动端实现excel在线预览,vue移动端H5网页excel预览,
Mysql 之 索引的作用 以及 不走索引的情况
Mysql 之 索引的作用 以及 不走索引的情况 写一下mysql索引吧,提及索引失效的原因的时候,当初只记得两个,虽然笔记有,当时的脑子可能是这样的。 温故而知新,看一遍不如写一遍 1. 为什么要创建索引 没有加索引的表就像 一本 没有目录的字典,而索引相当于目录, 能大大加速查询的速度。 1.1 如何创建索引 可以看到索引的类型有B-Tree 和 Hash Hash索引 先说Hash, 若是对Java的 HashMap 有所了解的话,就很容易理解了,网文很多~ **哈希索引:**通过哈
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
老版QQ原生表情gif动态
这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。
mysql count 不走索引_sql中不走索引情况
where 用到的字段没创建索引,就不走索引。下面这三种情况也会走索引。where field1 like '%abc%' --like %where substr(field1,1)='a' --函数where field1 in ('a','b','c') --in索引列有函数处理或隐式转换,不走索引索引列倾斜,个别值查询时,走索引代价比走全表扫描高,所以不走索引索引列没有限制 not nul...
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
mysql 索引 大于等于 走不走索引 最左前缀
你可以认为联合索引是闯关游戏的设计例如你这个联合索引是state/city/zipCode那么state就是第一关 city是第二关, zipCode就是第三关你必须匹配了第一关,才能匹配第二关,匹配了第一关和第二关,才能匹配第三关你不能直接到第二关的索引的格式就是第一层是state,第二层才是city上面举例介绍来源 https://zhidao.baidu.com/question/1863
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
什么是数据库索引?
数据库的索引:为了使得查询数据的效率变快。(1)聚集索引(主键索引):在数据库里面,所有的行数都会按照主键索引进行排序。(2)非聚集索引:给普通的字段加上索引。(3)联合索引(多属性索引):给好几个字段加上索引。联合索引的时候怎么走? where age = '18' and name = '小张' and sex = '男' 这种格式的,所以还是走索引,遵循最左匹配的原则。(4)对于D,因为age>20是范围,范围字段会结束索引对范围后面索引字段的使用,所以只走了age这个索引。(5)
MySQL 索引
加快查询的一种数据结构,包含:索引字段数据(一般情况:主键索引就是原本的数据,二级索引就是储存主键)你可以理解就像一本书的目录一样;根据索引字段定位到数据的位置,从而快速拿到数据减少回表减少 io 次数的手段当我们查询的字段包含在索引中时,我们就不需要回表而直接返回数据索引中有哪些字段?索引字段主键当你查询走了索引,并且返回的值刚好是索引字段或者返回字段的时候就可以避免回表而直接返回数据简单点来讲,就是我已经拿到我需要的东西了我干嘛还要回去呢?还是上面的例子(语文,数学,英语)的索引。
深度整理总结MySQL——组合索引工作原理
在实际业务中,我们会遇到很多复杂的场景,比如对多个列进行查询。这时,可能会要求用户创建多个列组成的索引.
为什么重复率高的字段不适合作为索引
理论文章会告诉你值重复率高的字段不适合建索引。不要说性别字段只有两个值,网友亲测,一个字段使用拼音首字母做值,共有26种可能,加上索引后,百万加的数据量,使用索引的速度比不使用索引要慢! 一个表可能会涉及两个数据结构(文件),一个是表本身,存放表中的数据,另一个是索引。索引是什么?它就是把一个或几个字段(组合索引)按规律排列起来,再附上该字段所在行数据的物理地址(位于表中)。比如我们有个字段是年...
MYSQL-字符编码导致不走索引
文章目录背景问题原因验证1验证2总结 背景 MySQL数据库版本为 8.0.22; 表user 的索引情况: show index from test.user; 表user_course的索引情况: show index from test.user_course; 可以看到user表和user_course表的name字段都有索引。 问题 select * from user inner join user_course on user.name = user_course.name w
mysql 查询不使用索引_简单的mySQL查询不使用索引
我有一个非常奇怪的问题与MySQL和简单的查询与简单的索引。我试图使用这个查询:SELECT * FROM `counter_links` WHERE `link_id`=1544;正如你所看到的,还有一个名为link_id的索引:mysql> show indexes from counter_links;+---------------+------------+------------...
论MySQL何时使用索引,何时不使用索引
索引: 使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构,例如 employee 表的姓(name)列。如果要按姓查找特定职员,与必须搜索表中的所有行相比,索引会帮助您更快地获得该信息。 索引是一个单独的、物理的数据库结构,它是某个表
838



被折叠的 条评论
为什么被折叠?



