首页 > 数据库 >【索引】Mysql索引常见问题

【索引】Mysql索引常见问题

时间:2022-08-25 11:02:51浏览次数:81  
标签:常见问题 聚簇 使用 索引 Mysql 磁盘 数据 节点

1、什么是索引:

  • 索引是一种数据结构,用来提高在数据表中的数据查询效率,同时也是随机读和有效排序的基础。

2、为什么使用索引:

  • 根本原因在于磁盘速度与内存速度差距甚大,所以我们希望能使用尽可能少的磁盘 IO 次数去拿到想要的数据,因此引入了索引,索引通过哈希表或 B+ 树的方式存储了索引值和数据块的对应关系,使得能够在较低的时间复杂度内拿到数据。

3、InnoDB 中为什么选择 B+ 树组织索引:

  • 实现索引的数据结构必须能在较低的时间复杂度内找到索引键对应的数据,除了哈希表外,可以选择排序树,同时为了减少磁盘 IO 次数,要求这棵树要尽可能低,要实现自平衡,不能在极端情况下退化为链表,再者,由于操作系统以页为单位进行磁盘 IO,这就意味这不能为了降低树高度无限增加一个树节点的子节点,所以为了保证一个中间节点持有更多子节点而选择 B+ 树而不是 B 树,另外,B+ 树所有数据存储在叶子节点,这样每次查询的时间复杂度都是一致的,可以获得更高的稳定性。

4、聚簇索引和非聚簇索引的区别:

  • 聚簇索引在一张表中只能有一个,一般是主键索引,聚簇索引的叶子节点存储的是真实地数据。
  • 非聚簇索引可以建立多个,其叶子节点存储地并不是真实地数据,而是主键值,根据非聚簇索引只能拿到该行记录地主键值,要拿到真实地数据还需要根据聚簇索引去查询

5、在什么情况下使用索引:

  • 读操作比例大大高于写操作比例时。
  • 数据区分度高。
  • 主键和外键建议使用。
  • 经常出现在 WHERE 子句中的列。

6、如何高效地使用索引:

  • 建立索引时尽量使用组合索引。
  • 不要对大量数据建立索引。
  • 建立组合索引时认真考虑先后顺序。
  • 使用索引时严格遵循最左前缀原则,避免索引失效。
  • 尽量使用索引覆盖,避免 SELECT *

7、更多内容:https://blog.csdn.net/h1012946585/article/details/109175548

 

 

博客参考:

Mysql索引,为什么用B+树?索引怎么加快查询的?应该如何使用索引?:https://blog.csdn.net/h1012946585/article/details/109175548

标签:常见问题,聚簇,使用,索引,Mysql,磁盘,数据,节点
From: https://www.cnblogs.com/hwh000/p/16623530.html

相关文章

  • MySQL-索引
    为什么需要索引?定义:索引是一个列或多个列进行排序的数据结构作用:索引能大幅提高查找效率缺点:创建和更新索引会耗费空间和时间查找结构进化一个个找:实现简单:太慢二分......
  • 统信 UOS Server 20 修改 MySQL 数据目录(datadir)
    一、环境说明操作系统:UnionTechOSServer20Enterprise数据库:MySQL5.7注1:统信UOS查看系统版本方式#方式一,查看发行版信息cat/etc/os-release#方式二,查看......
  • MySQL分区介绍与使用
    一、MySQL分区创建 MySQL创建方式一共有四种:range、list、hash和key。1.range(官方文档)1.1intcreatetablestaff(idint(32)notnull,code_varchar(30),......
  • 学习:python操作mysql(一)
    1、安装mysql,这里我大哥提供给我的是解压版的安装包为了防止自己以后忘了记录一下安装方式第一步将安装包解压到提前准备好的文件夹内  第二步配置环境变量path......
  • 【FAQ】统一扫码服务常见问题
    ​ 1、华为统一扫码服务在控制台打印的日志如何关闭?​答:非常抱歉,目前扫码SDK未提供相关api可以关闭日志打印。 2、统一扫码服务支持同时识别多个一维码吗?​答:非常......
  • mysql8.0.30zip压缩版的下载和安装
    1.首先进入官网下载地址:https://dev.mysql.com/downloads/mysql/ 2.接着选好操作系统,下载上面箭头所示的zip版本。 3.将下载好的压缩包解压出来,我的路径是:F:\mys......
  • MySQL数据库忘记root密码
    在Linux系统中MySQL数据库的root密码忘记后,我们可以通过修改配置文件的方式先跳过密码的方式跳过密码登录MySQL数据库,后在数据库中再进行修改密码。1.修改MySQL配置文......
  • Centos7 安装 Mysql
    Centos7安装Mysql资料链接:https://pan.baidu.com/s/1TTZY1qSYNj0TC7eAlA-qsA?pwd=jjjj提取码:jjjj准备本文通过rpm,进行MySQL数据库的安装,主要的步骤如下:1).检......
  • Mysql蜜罐读取电脑配置文件
    关于Mysql蜜罐的具体技术细节,网上文章介绍的太多了,大家可以自己从网上搜索文章,我写一个简介吧:mysql中有一个loaddatalocalinfile函数能够读取本地文件到mysql数据库中。......
  • 分布式搜索引擎01
    Mysql: 关系型数据库:数据在存储时数据和数据之间有一定的关联关系存储介质(存储位置):硬盘优点:不会导致数据丢失,有事务控制 缺点:执行消息低事务......