广告
返回顶部
首页 > 资讯 > 数据库 >Oracle中复合索引与空值的索引怎么用
  • 409
分享到

Oracle中复合索引与空值的索引怎么用

2024-04-02 19:04:59 409人浏览 独家记忆
摘要

这篇文章给大家分享的是有关oracle中复合索引与空值的索引怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在QQ群里讨论一个sql优化的问题,语句大致如下:selec

这篇文章给大家分享的是有关oracle中复合索引与空值的索引怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

在QQ群里讨论一个sql优化的问题,语句大致如下:

select A,min(B) from table group by A;--A,B都没有not null约束,A列无空值,B列有空值。--存在复合索引IX_TEST(A,B)

于是手动测试,环境采用Oracle自带的scott用户下的emp表。

1.首先查看如下语句的执行计划(此时表只有主键索引):

Oracle中复合索引与空值的索引怎么用

2.添加IX_TEST(deptno,comm)后查看执行计划:

Oracle中复合索引与空值的索引怎么用

Oracle中复合索引与空值的索引怎么用

发现依然是全表扫描。

3.为deptno列添加非空约束后再次查看执行计划:

Oracle中复合索引与空值的索引怎么用

Oracle中复合索引与空值的索引怎么用

4.总结

Btree索引是不存储空值的,这个是所有使用Btree索引的数据库的共同点。

在本例中我们创建了deptno,comm的符合索引。如果deptno没有非空约束,那么说明有的record不会出现在索引中,此时想要找到min(comm)就必须回表才能确定deptno为null的行是否有comm的值。此时优化器认为全表扫描比扫描索引再回表更为合理,因此选择全表扫描。

当我们添加了非空约束后,deptno不可能为空,因此索引的key值数等于表总行数,另一列comm即便为空也不影响min()取值,只需要扫描索引即可得到所需结果,此时优化器选择索引扫描。

而在Mysql中无论复合索引首列是否存在非空约束,都会使用索引,deptno为null的会全部分在一组取min(comm),可能是mysql的BTREE索引与Oracle的有所不同,使得首列为空都可以无需回表。

最后:Oracle的列能添加非空约束的一定要添加。

感谢各位的阅读!关于“Oracle中复合索引与空值的索引怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

您可能感兴趣的文档:

--结束END--

本文标题: Oracle中复合索引与空值的索引怎么用

本文链接: https://www.lsjlt.com/news/57333.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Oracle中复合索引与空值的索引怎么用
    这篇文章给大家分享的是有关Oracle中复合索引与空值的索引怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在QQ群里讨论一个SQL优化的问题,语句大致如下:selec...
    99+
    2022-10-18
  • 怎么理解oracle复合索引
    这篇文章主要讲解了“怎么理解oracle复合索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么理解oracle复合索引”吧!首先,在大多数情况下,复合索...
    99+
    2022-10-18
  • Oracle中组合索引怎么用
    这篇文章给大家分享的是有关Oracle中组合索引怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Oracle中组合索引的使用关键词:组合索引 前导列  基于规则的优...
    99+
    2022-10-18
  • mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用
    这篇文章主要介绍了mysql中聚集索引、辅助索引、覆盖索引、联合索引怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。聚集索引(Clustered Index)聚集索引就是...
    99+
    2023-06-29
  • mysql中怎么实现重复索引与冗余索引
    这篇文章将为大家详细讲解有关mysql中怎么实现重复索引与冗余索引,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。重复索引:表示一个列或者顺序相同的几个列上建...
    99+
    2022-10-18
  • oracle中使用索引与不使用索引的性能对比分析
    oracle中使用索引与不使用索引的性能对比分析,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前言Oracle存储索引的数据结构是B*树。...
    99+
    2022-10-18
  • oracle怎么查询表中的索引信息
    要查询Oracle数据库中表的索引信息,可以使用以下方法之一:1. 使用 `DESCRIBE` 命令:```sqlDESCRIBE ...
    99+
    2023-08-23
    oracle
  • 使用pandas怎么输出每行的索引值
    本篇文章为大家展示了使用pandas怎么输出每行的索引值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。输出结果name      objectID&...
    99+
    2023-06-14
  • python中的索引怎么使用
    在Python中,可以使用索引来访问和操作列表、字符串和元组等序列类型的对象。索引是一个非负整数,表示序列中的位置。索引从0开始,表...
    99+
    2023-08-18
    python
  • C#8.0中的索引与范围功能怎么用
    今天小编给大家分享一下C#8.0中的索引与范围功能怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。C#8.0中, 新增了...
    99+
    2023-06-29
  • ORACLE中怎么获取索引的创建语句
    今天就跟大家聊聊有关ORACLE中怎么获取索引的创建语句,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。set pagesize 0set long ...
    99+
    2022-10-18
  • pandas中join()方法怎么用于索引上的合并
    小编给大家分享一下pandas中join()方法怎么用于索引上的合并,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python有哪些常用库python常用的库:1...
    99+
    2023-06-14
  • Oracle与PostgreSQL的NULL和索引使用区别是什么
    这篇文章主要讲解了“Oracle与PostgreSQL的NULL和索引使用区别是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Oracle与Postgr...
    99+
    2022-10-18
  • MySQL5.7中的函数索引怎么用
    本篇文章给大家分享的是有关MySQL5.7中的函数索引怎么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 &nb...
    99+
    2022-10-19
  • 怎么使用PostgreSQL中的Bloom索引
    这篇文章主要讲解了“怎么使用PostgreSQL中的Bloom索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用PostgreSQL中的Bloom索...
    99+
    2022-10-18
  • SQL Server中的索引怎么使用
    本篇内容主要讲解“SQL Server中的索引怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL Server中的索引怎么使用”吧!一、索引的介绍什么是索引?索引是...
    99+
    2023-06-30
  • SQL Server中的索引怎么使用
    在SQL Server中,索引可以提高查询性能,加快数据的检索速度。下面是一些使用索引的常见方法:1. 创建索引:在需要加速查询的列...
    99+
    2023-08-18
    SQL Server
  • Unix系统中的索引功能与PHP如何结合使用?
    Unix系统是一种广泛使用的操作系统,而PHP是一种流行的编程语言。在Unix系统中,索引功能是非常重要的,它可以帮助用户更快地找到所需的文件和信息。在本文中,我们将讨论Unix系统中的索引功能以及如何在PHP中使用它。 一、Unix系统中...
    99+
    2023-10-16
    unix 索引 linux
  • 怎么在python中使用np.argmax() 返回最大值索引号
    怎么在python中使用np.argmax() 返回最大值索引号?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。import numpy as...
    99+
    2023-06-15
  • 怎么合理的使用MySQL索引结构和查询
    这篇文章主要讲解了“怎么合理的使用MySQL索引结构和查询”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么合理的使用MySQL索引结构和查询”吧!一、高性...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作