索引——选择性

【Mysql】:如何评估索引的选择性? 在MySQL中,评估索引的选择性(Selectivity)是优化查询性能的重要步骤。选择性是指索引字段中不同值的数量与总记录数的比例。一个具有高选择性的索引意味着它能有效地减少需要扫描的数据量,从而提高查询效率。相反,如果索引的选择性较低,则可能不会带来显著的性能提升,甚至可能导致查询变慢。 阅读详情

索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有2000条记
录,表索引列有1980个不同的值,那么这个索引的选择性就是1980/2000=0.99。

  一个索引的选择性越接近于1,这个索引的效率就越高。

  如果是使用基于cost的最优化,优化器不应该使用选择性不好的索引。如果是使用基于
rule的最优化,优化器在确定执行路径时不会考虑索引的选择性(除非是唯一性索引),并
且不得不手工优化查询以避免使用非选择性的索引。

  确定索引的选择性,可以有两种方法:手工测量和自动测量。

  (1)手工测量索引的选择性

  如果要根据一个表的两列创建两列并置索引,可以用以下方法测量索引的选择性:

  列的选择性=不同值的数目/行的总数 /* 越接近1越好 */

select count(distinct 第一列||'%'||第二列)/count(*)
from 表名
/

select count(distinct status||'%'||owner)/count(*)
from test;
/


  如果我们知道其中一列索引的选择性(例如其中一列是主键),那么我们就可以知道另一列索引的选择性。

  手工方法的优点是在创建索引前就能评估索引的选择性。

  (2)自动测量索引的选择性

  如果分析一个表,也会自动分析所有表的索引。

  第一,为了确定一个表的确定性,就要分析表。

analyze table 表名 compute statistics
/

  第二,确定索引里不同关键字的数目:

select distinct_keys
from user_indexes
where table_name='表名'
and index_name='索引名'
/

  第三,确定表中行的总数:

select num_rows
from user_tables
where table_name='表名'
/

  第四,索引的选择性=索引里不同关键字的数目/表中行的总数:

select i.distinct_keys/t.num_rows
from
user_indexes i,
user_tables t
where i.table_name='表名'
and i.index_name='索引名'
and i.table_name=t.table_name
/

  第五,可以查询USER_TAB_COLUMNS以了解每个列的选择性。

  表中所有行在该列的不同值的数目:

select
column_name,
num_distinct
from user_tab_columns
where table_name='表名'
/

  列的选择性=NUM_DISTINCT/表中所有行的总数,查询USER_TAB_COLUMNS有助测量每个列
的选择性,但它并不能精确地测量列的并置组合的选择性。要想测量一组列的选择性,需要
采用手工方法或者根据这组列创建一个索引并重新分析表。


LM Studio中文版零基础入门:从安装到模型下载的保姆级教程(附国内镜像源配置) 本文提供LM Studio中文版的零基础入门教程,涵盖从软件安装、中文界面切换到国内镜像源配置的全流程。特别针对模型下载速度慢的问题,详细介绍了如何通过修改配置文件使用国内镜像站,并推荐适合新手的入门模型及硬件配置建议,帮助用户快速上手本地大模型运行。 阅读详情

相关推荐

ENVI5.6 批量处理GF-2/GF-6/GF-7:从安装到融合的完整自动化流程

本文详细介绍了ENVI5.6环境下批量处理GF-2/GF-6/GF-7卫星数据的完整自动化流程,包括环境配置、工具安装、正射校正、图像融合等关键步骤。通过实战案例和优化技巧,帮助用户高效完成高分卫星影像处理,提升工作效率。特别针对GF-6和GF-7的特殊处理要点进行了深入解析。

weixin_42546392的博客 179

索引的选择性

索引的选择性是指索引列中不同值的数目与表中记录数的比。如果一个表中有2000条记录,表索引列有1980个不同的值,那么这个索引的选择性就是1980/2000=0.99。  一个索引的选择性越接近于1,这个索引的效率就越高。  如...

cneo2012的博客 321

Wincc7.5SP1 按钮操作记录(二次确认及语音播报)

Wincc 7.5 SP1 按钮操作记录生成(含二次确认及语音播报) 前面一篇文章已经介绍了“语音播报WINCC报警”,本文是之前功能的延伸,记录按钮操作记录并实现播报。 操作记录及语音播报效果 <创建消息文本> 1. 创建消息文本 消息编号100,消息等级“系统无确认”,消息类型“操作员输入消息”,消息文本“循环水泵启动操作”,其他参数默认。 消息编号101,消息等级“系

徐站的春天 1万+

Mysql 索引基数与选择性

索引的可选择性好与坏,和索引基数关系非常密切。基数值越高,索引的可选择性越好;相反,基数越低,索引的可选择性越差。优化器优先使用的索引一般选择性都不差,除非没得选,才会走选择性稍差点的索引或者走全表扫描。MYSQL 如何使用索引?之所周知,MYSQL 优化器使用的是基于成本的模型。而衡量成本的主要指标就是一个查询需要扫描多少行。如果表没有索引统计信息,或者索引统计信息不准确,优化器就很有可能做出错误的决定。统计信息不准确的问题可以通过 ANALYZE TABLE 来重新生成统计信息解决。

papaya的博客 1606

TS808效果器制作教程

TS808效果器制作教程 可以在立创商城购买到大部分的电阻电容和IC,音频接口,踩钉,电位器和电源接口可以去某宝看看都买得到的。链接https//pan.baidu.com/s/1QId1eIE3fJ2u5NLBSISvGA。安装过程过于繁琐,把所有元器件按照图纸焊接完成就可以调试了,祝你们成功!这是TS808经典效果器制作过程的记录。IC是JRC4558。...

qq_18948149的博客 3427

基于价值的深度强化学习:DQN

本文主要是介绍DQN原理和算法伪代码和代码实现,算法实现包括pytorch版本和stable-baselines3版本

溯源的专栏 1085

索引优化:索引选择性

索引选择性 索引的选择性是指,不重复的索引值和数据表的记录总数(T)的比值,范围从1/T 到 1 之间。 索引的选择性越高则查询效率越高,因为选择性高的索引可以让 MySQL 在查询时过滤掉更多的行。 唯一索引的选择性是 1,这是最好的索引选择性,性能也是最好的。 应用示例1 例如:select * from payment where id = 2 and customer_id...

ruanhao1203的专栏 2187

VBOX 3iS实战:如何用GNSS+IMU搞定车辆动态坡度测量(附避坑指南)

本文详细介绍了VBOX 3iS在车辆动态坡度测量中的高阶应用,通过GNSS+IMU融合技术和卡尔曼滤波算法,有效解决了传统测量方法在动态环境中的局限性。文章提供了设备配置、实战策略和数据后处理的实用指南,帮助工程师提升测量精度和效率。

weixin_42520796的博客 321

mysql前缀索引的索引选择性

mysql前缀索引的索引选择性一. 基础概念 在mysql中建立前缀索引的意义在于相对于整列建立索引,前缀索引仅仅是选择该列的部分字符作为索引,减少索引的字符可以节约索引空间,从而提高索引效率,但这样也会降低索引的选择性 关于索引的选择性,它是指不重复的索引值(也称为基数cardinality)和数据表的记录总数的比值,范围从1/(数据表记录总数)到1之间。索引的选择性越高则查询效率越高,因为选

dhrome的博客 8447

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 366

ESP32-S3开发环境避坑指南:VS Code+ESP-IDF离线安装全流程(附国内镜像加速)

本文提供了一份详细的ESP32-S3开发环境离线安装指南,重点解决网络依赖问题。通过整合国内镜像加速,手把手教你完成VS Code、ESP-IDF框架、工具链及Python依赖的本地化部署,实现稳定、可重复的开发环境搭建,大幅提升IoT开发效率。

peach的博客 962

索引选择性

索引的选择性:表中列的唯一键的数量比上表的行数,索引的选择性越高,索引返回的行数就可能越少,该索引就越好。 可以使用一个非常简单的SQL来计算某个索引的选择性,计算选择性之前,该索引必须被分析过 SQL> select index_name,last_analyzed,distinct_keys/num_rows selectivity from user_indexes;IN

落落的专栏 专注SQL调优 性能调优 4585

【异常】‘build.plugins.plugin.version‘ for org.apache.maven.plugins:maven-resources-plugin is missing

maven-compiler-plugin 插件版本信息没有指定导致了错误提示如下字面意思就是没有指定版本信息。

奶爸的编程之路,也就一周冷个三天 4599

mysql选择性查询_索引选择性

索引的 “ 选择性 ” 是指在该索引列里存储不同值的数目和记录数的比。比如某个表的记录数是 1000 条,而该表的索引列的值只有 900 个不同的值(有 100 个是相同或是空)。这样索引的可选择性为 900/1000 为 0.9 。这样当然效果就不好,最好的索引可选择性(如主键索引)是 1.0 。索引的可选择性是衡量索引的利用率的方法,比如在极端的情况下,一个表记录数是 1000 ,而索引列的值...

weixin_28910825的博客 483

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

索引选择性那点事儿

前言 最近通过 https://zbov.meizu.com/ 平台推送的’SLOW_QUERY’做相应的优化,在变更前,我会和开发沟通下优化选择,然后根据业务情况再做相应的优化。发现对于索引选择性,大家还是看法不一的。所以就写了这篇文章。 什么是索引选择性 当我们设计索引的时候首先一个就是字段基数问题,如果一个字段在100万行数据里面,这100万行数据中这个字段的值,要不然是0,要不然就是1,那么这个字段的基数就是2,为什么?因为这个字段的值就两个选择,0/1。这个时候我们就称这种字段的区分度不高,也.

qq_42315096的博客 601

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

mysql选择性_Mysql索引的选择性

对于索引的使用,MySQL并不一直都是用采用正确的决定的。参考一个简单的表:CREATE TABLE `r2` (`ID` int(11) DEFAULT NULL,`ID1` int(11) DEFAULT NULL,`CNAME` varchar(32) DEFAULT NULL,KEY `ID1` (`ID1`)) ENGINE=MyISAM DEFAULT CHARSET=latin1SE...

weixin_39830020的博客 392

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MySQL前缀索引和索引选择性

1、我们怎么合理使用前缀索引 有时候需要索引很长的字符列,这会让索引变得大且慢。通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。 但这种做法会带来新的问题,降低索引的选择性。 索引的选择性是指不重复的索引值(也称为基数)和数据表的记录总数(#T)的比值,范围从1/#T到1之间。索引的选择性越高则查询效率越高,因为选择性高的索引可以让MySQL在查找时过滤掉更多的行。唯一索引...

yyyxxxs的博客 409
上一篇: Flex Library Linking (RSL, External, Merged)
下一篇: 索引——集群因子
narutobing
博客等级 码龄18年 2粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值