首页
学习
活动
专区
圈层
工具
发布

【DB笔试面试564】在Oracle中,什么是索引的选择性?

♣ 题目部分 在Oracle中,什么是索引的选择性? ♣ 答案部分 索引的选择性(Index Selectivity,索引的选择度或索引的选择率)是指索引列中不同值的记录数与表中总记录数的比值。...索引的选择性的取值范围是[0,1]。例如,某个表的记录数是1000条,而该表的索引列的值只有900个不同的值(有100个是相同或是空),所以,该列索引的选择性为900/1000=0.9。...对于索引的选择性,值越高那么表示该列索引的效率也就越高。...可以使用如下的SQL来计算索引的选择性: SELECT COUNT(DISTINCT NAME)/COUNT(*) FROM TB_A; 这种方法的优点是在创建索引前就能评估索引的选择性。...选择性越接近1,那么该索引就越好。 本文选自《Oracle程序员面试笔试宝典》,作者:李华荣。

1.4K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL索引选择规划

    索引基数如果真的基于表的所有数据精准计算,代价过高,因此基数在获取的时候还是基于采样获得。...MySQL中有两种存储索引统计的方式,可以通过设置参数innodb_stats_persistent 的值来选择: 设置为on,表示统计信息会持久化存储,N为20,M为10 设置为off,表示统计信息只存储在内存中...通过刚开始的explain语句,不走索引需要扫描98811行,而走索引a只需要10001行,但优化器最终选择了全表扫描。...原因是全表扫描是在主键索引上扫描,没有回表操作的额外代价,优化器会自己估算全表扫描和索引a的代价,从上述结果来看,优化器认为全表扫描更加快捷,但是我们通过慢日志可以看出优化器的这个选择并不是最优解。...如何处理索引选择异常?

    1.6K10

    RPM索引在Artifactory中是如何工作

    所以新的索引过程: 性能上优于之前自动触发的异步计算 同时不需要在单独开发触发元数据计算的插件 可以监控并且准确地知道新的元数据计算的状态 如下图:创建RPM仓库时选择“Auto Calculate RPM...,并且将索引添加操作加入到Artifactory内部的队列中进行计算。...例: 有一个CI任务可以将很多版本上传到一个大型仓库里,可以在流水线中增加一个额外的构建步骤。...中的以下软件包上启用调试/跟踪级别日志记录(修改$ ARTIFACTORY_HOME / etc / logback.xml)以跟踪/调试您的计算: 自动计算(异步): DEBUG级别:{path}的异步...RPM存储库元数据 DEBUG级别:完成对RPM存储库元数据的索引编制

    4.3K20

    在seaborn中设置和选择颜色梯度

    seaborn在matplotlib的基础上进行开发,当然也继承了matplotlib的颜色梯度设置, 同时也自定义了一系列独特的颜色梯度。...在seaborn中,通过color_palette函数来设置颜色, 用法如下 >>> sns.color_palette() [(0.12156862745098039, 0.4666666666666667...该函数接受多种形式的参数 1. seaborn palette name 在seaborn中,提供了以下6种颜色梯度 1. deep 2. muted 3. bright 4. pastel 5. drak...4. cubehelix palette 通过子函数cubehelix_palette来实现,创建一个亮度线性变化的颜色梯度,在color_palette中,通过前缀ch:来标识对应的参数,用法如下 >...在seaborn中,还提供了4种独特的渐变色,用于绘制热图 1. rocket 2. flare 3. mako 4. crest rocker是默认的颜色梯度 >>> sns.heatmap(data

    6.7K10

    MySQL普通索引和唯一索引的选择

    背景 假设你的项目中主要负责车辆管理系统,每辆车的车牌号在系统上唯一,在新增车辆时,业务层面会先判断待新增的车辆车牌号是否已存在系统中,产品功能中使用频率最高的是根据车牌号查询车辆信息,由于业务量和数据量的增加...,现在需要考虑在车辆表车牌号字段增加索引,现有两种索引可供选择:唯一索引、普通索引。...,因此,在查询时,唯一索引和普通索引的性能差距很小。...在InnoDB中,每个数据页的大小默认是16KB. 数据页:二级索引的数据页,并不是聚簇索引即主键树的数据页。 数据库中耗时的操作为随机读写磁盘IO....对于普通索引来说,找到待插入位置,插入值,语句结束。 当目标页在内存中时,唯一索引和普通索引在插入时性能差距微乎其微。

    1.7K20

    在Oracle中,索引是否必须定期重建?索引重建有哪些影响?

    题目部分 在Oracle中,索引是否必须定期重建?索引重建有哪些影响? ♣ 答案部分 一般而言,极少需要重建B树索引,基本原因是B树索引很大程度上可以自我管理或自我平衡。...聚簇因子可以反映给定的索引键值所对应的表中的数据排序情况。重建索引不会对聚簇因子产生影响,要改变聚簇因子只能通过重组表的数据。...若是重建索引,则建议对以下的索引进行重建: ① 在分析(ANALYZE)指定索引之后,查询INDEX_STATS的HEIGHT字段的值,如果HEIGHT>=4即索引深度超过3级,那么最好重建(REBUILD...为此,Oracle在Mos中给出了相关分析的脚本:“研究 b-tree 索引结构的脚本 (文档 ID 1577374.1)”。...这个脚本将根据已存在的表和索引的统计信息来核实B-Tree索引结构,并可以估计索引的理论大小和索引布局,而且该脚本会将收集的信息以历史记录的形式保存在INDEX_HIST表中。

    2.9K10

    MySQL选择普通索引还是唯一索引(216)

    普通索引和唯一索引 基本概述 MySQL中可以创建普通索引与唯一索引,这两种索引的区别是: 普通索引(Non-Unique Index),也称为非唯一索引,它允许索引中的条目具有重复的键值。...普通索引创建方法: CREATE INDEX idx_email ON customers(email); 唯一索引(Unique Index)是一种数据库索引,它要求索引中的所有键值都是唯一的。...如果尝试插入或更新记录以产生重复的索引键值,数据库将拒绝这种操作。 唯一索引的特点: 保证索引中的键值是唯一的。 适用于确保数据表中某一列或列组合的唯一性,例如身份证号、用户名等。...通常也会加快查询速度,尤其是在执行等值查询(例如,查询特定ID的记录)时。...在 InnoDB 中,每个数据页的大小默认是 16KB。 所以在内存中进行查询时,两种索引的性能差别很小。 InnoDB存储引擎中存在Change Buffer机制。

    1.3K10

    Mysql如何选择唯一索引和普通索引

    相信大家对唯一索引和普通索引是有一定的了解的,那么在不同的业务场景,使用唯一索引还是普通索引呢,比如下面的场景 假设你在维护一个账户系统,每一个人都有一个唯一的身份证,而业务也能保证他的唯一性,此时我们设置唯一索引和普通索引其实都是可以的...对于普通索引找到3和5之间的位置,插入这个值,语句结束 这种情况差距就是判断冲突的操作,影响差别不大 第二种更新记录不在内存中 对于唯一索引,需要将数据页读入内存中,判断有没有冲突,插入这个值,语句结束...对于普通索引,仅仅把更新操作记录在change buffer中,语句结束 减少从磁盘读入内存以及随机IO访问,是数据库性能提高的操作之一,而change buffer就是在较少随机访问磁盘的操作,因此对性能的提高是很明显的...索引的选择和实践 普通索引和唯一索引选择,其实,这类索引在查询能力上是没有差别,主要考虑的是对更新性能的影响,所以建议选择普通索引。...如下面插入语句 insert into t(id,k) values(id1,k1),(id2,k2); 这里,我们假设当前k索引树的状态,查找到位置后,K1所在的数据页在内存中,k2所在的数据页不在内存中

    2.6K20

    普通索引和唯一索引,应该怎么选择?

    4)从性能的角度考虑,应该选择唯一索引还是普通索引呢?...看下面的分析 案例:从这两种索引对查询语句和更新语句的性能影响来进行分析 4.1)select id from T where k=5在索引树上查找的过程在怎样的?...数据页不在内存中的话,在不影响数据一致性的前提下InnoDB 会将这些更新操作丢到 change buffer 中,这样就不需要从磁盘中读入这个数据页了。等下次有人查询的时候把数据页读到内存中了。...4.4)通过上面的分析,你知道更新的时候该选择唯一索引还是普通索引了吗?为什么? 将数据从磁盘读入内存涉及随机 IO 的访问,是数据库里面成本最高的操作之一。...5)经过上面的学习,普通索引和唯一索引应该怎么选择? 它两查询没啥差别,但是更新的话还是普通索引更胜一筹,所以我们尽量选择普通索引。

    84110

    常见索引类型及在MySQL中的应用

    索引的出现其实是为了提高数据查询的效率,就像书的目录一样,根据目录可以快速定位到内容,类比于索引,根据索引提供指向存储在表的指定列中的数据值的指针,根据指针找到包含该值的行。...索引的常见模型 哈希表 有序数组 B+树 哈希表 哈希表模型是将待查询的值放入key中,value值放入数组中, 图片 当使用哈希表时,key值计算成确定位置,将value值放入该地址对应的哈希槽,取值通过...有序数组 有序数组在等值查询和范围查询场景中的性能都非常优秀。 仅看查询效率,有序数组是最好的数据结构,使用二分法查询可以快速查询到目标值,时间复杂度是O(log(N))。...二叉树是搜索效率最高的,但是实际上没有多少数据库存储使用,因为索引不止存在于内存中,还要写在磁盘上。数据量较大时,二叉树的树过高,查询时需要访问过多节点,即需要硬盘多次寻址,这是一个耗时操作。...树高是4的时候,就可以存1200的3次方个值(17亿),树根的数据总是存在内存中的,一个10亿行的表上一个整数字段的索引,查找一个值最多只需要访问3次磁盘。

    1.9K30

    MySQL中MyISAM和InnoDB的索引方式以及区别与选择

    而对于二级索引,在 MyISAM存储引擎中以与上图同样的方式实现,可以看出MyISAM的索引文件仅仅保存数据记录的地址。...,InnoDB 中,主键索引和数据是一体的,没有分开。...可以有目的性地选择聚集索引,比如一个邮件表,可以选择用户ID来聚集数据,这样只需要从磁盘读取较少并且连续的数据页就能获得某个id的用户全部的邮件,避免了读取分散页时所耗费的随机I/O。...再例如,用非单调的字段作为主键在InnoDB中不是个好主意,因为InnoDB数据文件本身是一颗B+Tree,非单调的主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁的分裂调整,十分低效,...3、该如何选用两个存储引擎呢 此处参考链接:MySQL中MyISAM与InnoDB区别及选择 因为MyISAM相对简单所以在效率上要优于InnoDB.如果系统读多,写少。对原子性要求低。

    1.2K60

    48%的Kubernetes用户在工具选择中挣扎

    在 Spectro Cloud 的一份 新报告 中接受调查的近一半 Kubernetes 用户表示,他们在选择和验证要在生产环境中使用的基础设施组件时遇到了问题。...根据调查参与者的回答,对于组织来说,选择实在太多了。在新报告中,48% 的人表示,他们发现很难从 广泛的云原生生态系统 中决定使用哪些堆栈组件。...除了调查参与者报告的难以选择所需的工具之外,配置漂移(45% 的人将其列为挑战,高于 2023 年 Spectro Cloud 报告中的 33%)以及难以防止安全漏洞(43%,高于 26%)是其他主要痛点...采用平台工程的用户遇到的问题较少 平台工程 已成为在 Kubernetes 上运行分布式系统时解决复杂性过高和工具选择过多的问题的解决方案。...在采用平台工程的 70% 的组织中,不到一半的人强烈认为它已被完全采用。

    3.7K10
    领券