首页 > 其他分享 >索引总结

索引总结

时间:2024-03-28 16:58:08浏览次数:12  
标签:总结 二级 聚集 id 索引 查询 区分度

MYSQL索引总结篇

为什么要使用索引

1.当你在茫茫人海中寻找一个人,比如说他的名字是xxx,你不得不挨个问过去,很麻烦,所以要给它一个索引

索引的结构

  1. B+树(最常用,前面的博客有细讲,支持范围查询
  2. 哈希表 精准度很高,因为一个哈希值仅仅对应一个或几个数据

索引分类与使用

聚集索引与二级索引

聚集索引可以理解为主键,找到id之后下面的row就挂着它对应的数据,直接根据id查,只需要查一次,性能比较快

二级索引就是,非主键查询,比如说根据username,查询user的所有信息,流程是什么呢,首先,去二级索引那一棵树上,通过用户名,拿到id,但是还没完,再拿着id,去聚集索引查询,相当于查两次,所以说性能比较慢,那么有没有更好的方式呢,那当然

单列索引和联合索引

  1. 单列索引直接跟着字面意思理解,就是某个索引直接对应某个字段

  2. 联合索引就是,多个字段联合起来,共用一个索引

    有什么用呢,比如说,你想根据name来查询身份证号,那么按照以往情况,要用二级索引,查两次,但是,现在有联合索引,只要通过二级索引查一次就ok了,联合索引的本质也是一个二级索引,但是,有个误区就是,想说通过id来查询联合索引对应的字段,其实多此一举了,直接主键查询,聚集索引

但是捏,聚集索引也有它需要注意的点

就是最左前缀法则,就是最左边的那个字段一定要在,不然会引发索引失效

那还有什么情况会引发索引失效呢,首先就是别傻傻的在字段上上进行函数运算操作,接着就是字符串没加引号也会导致索引失效

前缀索引

比如说,你想根据文章内容,查询跟文章有关的某个信息,文章内容是不是贼大?要是直接以它为二级索引,数据库是不是会炸掉?所以说是不是可以裁减相应一部分,这就引出了前缀索引

就直接裁剪该字段的前几个值,作为索引,那么就涉及到一个调参问题,要裁剪几个呢? 有一个公式,区分度吧可以这么理解,就是 区分度Q=不同索引个数/总数,所以说Q值越大,区分度越高,但是虽然说区分度高的话比较精确,但是维护成本会相对来说高一些,所以就要权衡利弊,协调好

标签:总结,二级,聚集,id,索引,查询,区分度
From: https://www.cnblogs.com/cjtaaa/p/18102078

相关文章

  • MySQL索引18连问,谁能顶住
    前言过完这个节,就要进入金银季,准备了18道MySQL索引题,一定用得上。作者:感谢每一个支持:github1.索引是什么索引是一种数据结构,用来帮助提升查询和检索数据速度。可以理解为一本书的目录,帮助定位数据位置。索引是一个文件,它要占用物理空间。2.MySQL索引有哪些......
  • 代码内容总结
    一、uniapp相关代码1.获取定位授权并调用接口的封装知乎:uniapp获取定位授权并调用接口的封装-知乎(zhihu.com)https://zhuanlan.zhihu.com/p/677299084CSDN:uniapp获取定位授权并调用接口的封装-CSDN博客https://blog.csdn.net/m0_70716007/article/details/137111429?s......
  • 【Bitmap Index】B-Tree索引与Bitmap位图索引的锁代价比较研究
    通过以下实验,来验证Bitmap位图索引较之普通的B-Tree索引锁的“高昂代价”。位图索引会带来“位图段级锁”,实际使用过程一定要充分了解不同索引带来的锁代价情况。1.为比较区别,创建两种索引类型的测试表1)在表t_bitmap上创建位图索引SEC@ora11g>createtablet_bitmap(idnumber(1......
  • 4.Python数据分析—数据分析入门知识图谱&索引(知识体系下篇)
    4.Python数据分析—数据分析入门知识图谱&索引-知识体系下篇一·个人简介二·机器学习基础2.1监督学习与无监督学习2.1.1监督学习:2.1.2无监督学习:2.2特征工程2.3常用机器学习算法概述2.3.1监督学习算法:2.3.2无监督学习算法:2.3.3强化学习:2.4模型评估与选择三......
  • 第四章(页面组件)总结
    4.1一组件的定义及属性组件是页面视图层(WXML)的基本组成单元,组件组合可以构建功能强大的页面结构。小程序框架为开发者提供了容器视图、基础内容、表单、导航、多媒体、地图、画布、开放能力等8类(30多个)基础组件。每一个组件都由一对标签组成,有开始标签和结束标签,内容放置在开......
  • 14道MyBatis面试题总结,看完你还敢说懂MyBatis吗?
    Dao接口,就是人们常说的Mapper接口,接口的全限名,就是映射文件中的namespace的值,接口的方法名,就是映射文件中MappedStatement的id值,接口方法内的参数,就是传递给sql的参数。Mapper接口是没有实现类的,当调用接口方法时,接口全限名+方法名拼接字符串作为key值,可唯一定位一个MappedS......
  • salesforce零基础学习(一百三十五)项目中的零碎知识点小总结(七)
    本篇参考:https://trailhead.salesforce.com/content/learn/modules/flow-implementation-2/debug-flows-as-another-userhttps://developer.salesforce.com/docs/platform/lwc/guide/create-components-dom-work.html?q=ref#refshttps://developer.salesforce.com/docs/platfo......
  • ssm框架学习总结
    SSM框架的定义SSM框架是spring、springMVC、和mybatis框架的整合,是标准的MVC模式。标准的SSM框架有四层,分别是dao层(mapper),service层,controller层和View层。pojo层PlainOrdinaryJavaObject,也有人称其为model、domain、bean等,pojo层是对应的数据库表的实体类。持久......
  • SqlServer(3)SqlServer经典总结大全-数据库同步-基础知识整理-能力提升
    三、SQLServer同步复制技术实现步骤,配上详细步骤和代码语句和输出SQLServer的同步复制是一种确保数据在发布服务器和订阅服务器之间实时同步的技术。以下是同步复制的详细步骤,包括代码语句和可能的输出。1.准备工作确保两台服务器(发布服务器和订阅服务器)的网络连接是正......
  • JavaScript 基础、内置对象、BOM 和 DOM 常用英文单词总结
    一提到编程、软件、代码。对于英语不是很熟悉的同学望而却步。其实没有想像中的难么难,反复练习加上自己的思考、总结,会形成肌肉记忆。整理一下,初学者每天30遍。1、JavaScript基础语法break:中断循环或switch语句的执行。case:在switch语句中检查的值。catch:在try-c......