程序员的知识教程库

网站首页 > 教程分享 正文

SQL优化相关对象——索引(sql优化索引失效)

henian88 2024-10-25 11:51:20 教程分享 2 ℃ 0 评论

进行SQL优化的过程中,首先需要了解语句相关对象的情况。数据库对象设计的好坏,会直接影响相关对象语句执行的效率。因此,有时在SQL语句实在无法优化的情况下,可以考虑通过修改对象的结构来完成优化。

索引可以说是Oracle数据库中除了表以外最重要的对象了。通过添加索引来提高查询性能,也是最为常见的一种优化手段。甚至很多非DBA人员认为,数据库优化就是加索引。这虽然说有些偏颇,但也说明了索引对于优化的重要意义。

B树索引

B树索引是Oracle数据库的默认索引,也是最为常见的一种索引。

B树索引整个索引结构就是一个平衡树(Balance Tree),这也就是称为B树索引的原因。在整个树形结构中,包含有3种节点,分别是根节点(Root)、分支节点(Branch)、叶子节点(Leaf)。有的简单的索引只有根节点和叶子节点。在根节点或分支节点中,存在一组键值范围,当根据条件访问到这个节点时,根据范围路由到不同的分支节点或叶子节点。

位图索引

位图索引是另外一种较为常见的索引,虽然说是较为常见,但也仅限于个别场景,其主要适用在分析型数据库中。其原理与B树索引完全不同。在Oracle的优化器中,个别场景下可以将两类索引相互转换。

其他索引

上面我们谈到了最为常见的两种索引类型,下面再看看其他索引类型。

从本质上来讲,它们还是B树或者位图索引。

函数索引

函数索引就是将一个函数计算的结果存储在列中,而不是存储列数据本身。

虚拟列索引

虚拟列是在11g中新引入的一个技术。

从字面就可以理解,创建的列不真正物理保存,而只是一个定义。

而基于这个列创建的索引,就是虚拟列索引。在某种程度上,

虚拟列索引和上面谈到的函数索引有些类似

虚拟索引

Oracle可以通过NOSEGMENT子句命令创建一个

永远不会使用且不会为其分配任何盘区的索引。

不可见索引

不可见索引不是一种特殊的索引类型,而是使索引对优化器“不可见”,这样就没有查询会使用它了。这对于评估索引使用效果非常有帮助。

压缩索引

Oracle中的索引键允许压缩存储索引键中前面重复的部分,并且是每个叶块而不是每个叶块中的每行存储重复的值。

复合索引

当某个索引包含有多个已索引的列时,这个索引就称为复合索引。

反转索引

反转索引是一种特殊的B树索引。它将索引列中列值的每个字节的位置反转。

2022MySQL—— 最新版安装保姆级超详细教程(附安装包)_哔哩哔哩_bilibili

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表