首页 > 其他分享 >‌索引基数

‌索引基数

时间:2025-01-09 14:47:26浏览次数:1  
标签:数据 Tree 索引 Cardinality 基数 节点

索引基数‌是指索引中不重复的索引值的数量。例如,某个数据列包含值1、2、3、4、5、1,那么它的基数就是5。索引基数越高,索引的工作效果越好,因为索引基数高意味着列中包含很多不同的值,重复的值很少,这样索引在查找数据时会更高效‌12。

索引基数的计算方式

索引基数的计算通常采用采样的方法。以InnoDB存储引擎为例,InnoDB会对B+Tree索引的8个叶子节点的信息进行统计。具体过程如下:

  1. 取得B+Tree所有叶子节点的数量,记为A。
  2. 随机选取B+Tree索引的8个叶子节点。
  3. 统计每个叶子节点的不同记录的条数,记为P1, P2, ..., P8。
  4. 根据采样计算出Cardinality的预估值:Cardinality = (P1 + P2 + ... + P8) * A / 8‌1。

索引基数的重要性

索引基数相对于数据表行数较高时,索引的工作效果最好。如果某数据列含有很多不同的年龄,索引会很快地分辨数据行。相反,如果某个数据列用于记录性别(只有“M”和“F”两种值),那么索引的用处就不大。如果值出现的几率几乎相等,无论搜索哪个值都可能得到一半的数据行,这种情况下最好根本不要使用索引,因为查询优化器会忽略索引,进行全表扫描‌12。

查看索引基数的方法

在MySQL中,可以通过以下SQL语句查看表的索引基数:

sqlCopy Code   SHOW INDEX FROM table_name;

在结果中,Cardinality列展示了该索引对应的索引基数,这是一个估计值,不是准确值。因为在实际生产环境中,数据表的更新操作非常频繁,每次数据更新都会影响索引文件,如果每次更新都要进行统计会增加系统压力‌

 

标签:数据,Tree,索引,Cardinality,基数,节点
From: https://www.cnblogs.com/ILoveJackSparrow/p/18662110

相关文章

  • sqlserver 索引
    DBCCSHOWCONTIGWITHALL_INDEXES--查看所有表的索引碎片情况DBCCSHOWCONTIG(fq_viewvform)--指定表索引碎片情况dbccdbreindex('fq_viewvform')--重建表索引DBCCSHOWCONTIG(fq_viewvform)--检查重建后表索引碎片情况   扫描页数:如果你知道行的近似尺寸和表或索引......
  • 搜索补全(一):倒排索引与Trie的魔法
    搜索补全技术:提升用户体验的智能助手搜索系列相关文章(置顶)1.原始信息再加工:一文读懂倒排索引2.慧眼识词:解析TF-IDF工作原理3.超越TF-IDF:信息检索之BM254.深入浅出BeamSearch:自然语言处理中的高效搜索利器5.搜索补全(一):倒排索引与Trie的魔法6.搜索补全(二):Trie树经典......
  • Python----Python基础(元组 tuple,元组的创建,基本操作:访问,连接,索引,计数,长度,最大值,最小值
    一、元组tuple列表属于可变序列,可以任意修改列表中的元素。元组属于不可变序列,不能修改元组中的元素。因此,元组没有增加元素、修改元素、删除元素相关的方法。二、元组的创建 2.1、使用()方式创建元组使用圆括号 () 可以创建一个元组,元素之间用逗号 , 分隔。......
  • 索引及执行计划
    索引的作用类似于一本书中的目录,通过索引可以快速定位到数据具体的物理存储位置,起到优化查询的作用索引的分类B树   默认使用的索引类型(原型:平衡二叉树算法)B+树B*树R树   地图、三维、数据量大HashFullText  全文索引,速度慢,全文检索一遍GIS索引(空间索......
  • 我在广州学 Mysql 系列——与索引相关的练习题
    ℹ️大家好,我是练小杰,今天星期二啦,还有三天就是星期五了,为了美好生活奋斗吧朋友们!本文将学习MYSQL中数据表内容的索引相关练习题目~~复习:......
  • Elasticsearch倒排索引
    正向索引我们先来回顾一下正向索引。例如有一张名为tb_goods的表:idtitleprice1小米手机34992华为手机49993华为小米充电器494小米手环49………其中的id字段已经创建了索引,由于索引底层采用了B+树结构,因此我们根据id搜索的速度会非常快。但是其他字段例如title,只在叶子节点......
  • MySQL索引原理及慢查询优化4
    背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等......
  • MySQL索引原理及慢查询优化9
    背景MySQL凭借着出色的性能、低廉的成本、丰富的资源,已经成为绝大多数互联网公司的首选关系型数据库。虽然性能出色,但所谓“好马配好鞍”,如何能够更好的使用它,已经成为开发工程师的必修课,我们经常会从职位描述上看到诸如“精通MySQL”、“SQL语句优化”、“了解数据库原理”等......
  • MongoDB的索引和查询分析(explain)
    •创建普通索引,使用命令db.collection.createIndex({key:1})•创建唯一索引,使用命令db.collection.createIndex({key:1},{unique:true})a.语法中Key值为你要创建的索引字段,b.1为指定按升序创建索引,如果你想按降序来创建索引指定为-1即可。• createIndex()接收可选参数,可......
  • 网站优化排名:解锁搜索引擎流量的密钥
    在数字化时代,网站不仅是企业线上身份的象征,更是连接潜在客户的桥梁。然而,在数以亿计的网站中脱颖而出,让目标受众轻松找到你,并非易事。网站优化排名,即通过一系列策略和技术手段提升网站在搜索引擎结果页面(SERP)上的排名,成为了吸引高质量流量、提升品牌知名度和促进业务增长的关......