首页 > 数据库 >MySQL中的索引应用

MySQL中的索引应用

时间:2023-01-02 19:56:11浏览次数:42  
标签:index 存储 name Tree 索引 应用 MySQL first

1.什么是索引(Index)?

官方的定义是索引是一种数据结构,从生活的纬度上讲,假如将一本书比作成一张表,这本书的目录就是表中的索引(Index)。

2.索引的优势和劣势?

优势:数据量比较大时,为了快速找我们需要的数据可以使用索引,这个可以提高查询效率。

劣势:索引会占用额外的存储空间(InnoDB 索引和数据是在一起的)

   会对更新操作带来一定的复杂度(更新记录时,需要更新索引)

3.使用索引的应用场景?

索引一般应用于查询操作中,用于提高查询效率。例如 索引可以应用于如下子句的优化逻辑中。

1)on 子句

2)where 子句

3)group by 子句

4)having 子句

5)order by 子句

4.索引的分类设计?

分类维度:逻辑应用维度(主键,普通,联合,唯一,空间索引....)

     物理存储维度(聚簇索引-索引和数据存在一起,非聚簇索引-索引和数据分开存储)

     数据存储结构维度(hash,B+Tree....)

5.如何查看表中的索引?

show index from 表名;

6.如何创建索引?

1)创建表的同时创建索引(create table 表名(字段),index 索引名(字段名))

2)创建表后通过create语句创建索引(create index 索引名 on 表名(字段名))

3)创建表后通过alter语句创建索引(alter table add index 索引名(字段名))

创建普通索引案例

create index index_first_name on student(first_name);

alter table student add index index_first_name(last_name);

创建唯一索引案例

create unique index index_first_name on student(first_name);

alter student add unique index index_email (email);

创建组合(联合)索引案例

create index index_first_last on student(first_name,last_name);

alter table student add index index_first_last (first_name,last_name);

7.如何删除索引?

drop index 索引名 on 表名;

MySQL中InnoDB默认的索引存储结构是B+Tree

8.什么是B+Tree?

一种平衡多叉树,是B-Tree的Plus版,主要用于索引的存储结构,然后基于这种结构提高查询效率。

9.MySQL中的B+Tree有什么特点?

1)树中的非叶子节点只能存储索引和指针

2)树中的叶子节点存储索引和数据

3)树中的叶子节点处于相同层,并且有序,他们之间会使用双向链表连接,可以更好的支持范围查询

10.MySQL中B+Tree相对于B-Tree有什么优点?

1、一个磁盘可以存储的索引数量会更多(B+Tree的非叶子节点只存储索引和指针)

2、相同数据量的B+Tree相对于B-Tree的高度相对会比较低(因为分叉多了)

3、叶子节点之间B+Tree有双向链表的连接,可以支持快速的范围查询。

11.聚簇索引有哪些类型?

InnoDB中,一张表中只有一个聚簇索引(即主键索引),其他索引都是二级索引,在实际应用中,我们可以直接通过主键聚簇索引查询到具体记录。假如是二级索引,这个索引中存储的是索引以及主键,我们使用二级索引执行查询时,是先基于二级索引找到主键,再基于主键去查询具体记录(这个过程就叫回表查询)。

12.什么是非聚簇索引?

非聚簇索引是索引与数据是分离的,索引和数据是单独存储的。MyISAM存储引擎就是非聚簇索引。

非聚簇索引结构:

非聚簇索引的值是什么?

非聚簇索引在创建时,存储的是索引值以及索引对应的记录的地址,基于非聚簇索引查询数据时,可以先基于索引找到数据的一个地址,然后基于地址再去找查询数据。单从索引角度来说,非聚簇索引查找速度不如聚簇索引,非聚簇索引找到索引位置后还需要根据索引找到数据对应的位置。

标签:index,存储,name,Tree,索引,应用,MySQL,first
From: https://www.cnblogs.com/yangcrazy/p/17020409.html

相关文章

  • shodan 黑暗搜索引擎
    shodan介绍服务器上的扫描器24小时在扫描网络设备安装配置安装pipinstallshodan初始化shodaninitapi获取api淘宝买永久会员初级15,高级35查看是否是会员......
  • 《iOS网络编程与云端应用最佳实践》上线了-源码下载,样章-正式发售了
    ​​​​作者:关东升出版社:清华大学出版社出版时间:2013-5-1版次:1页数:424iOS网络编程与云端应用最佳实践目录推荐序(一)Ⅰ推荐序(二)Ⅲ赞誉Ⅴ前言Ⅶ第1章开篇综述1.1本书结......
  • 关于MySql链接url参数的设置 专题
    报错:EstablishingSSLconnectionwithoutserver'sidentityverificationisnotrecommended.AccordingtoMySQL5.5.45+,5.6.26+and5.7.6+requirementsSSLconnec......
  • SQL注入之MYSQL注入
    前言:MYSQL注入中首先要明确当前注入点权限,高权限注入时有更多的攻击手法,有的能直接进行geshell操作。其中也会遇到很多阻碍,相关的防御反感也要明确。高权限注入及低权限......
  • MySql学习笔记--基础篇02
    约束外键--父表和子表,如果要删除父表的记录时,会判断子表是否存在关联关系,如果存在不予删除  多表关系一对多,在此表中建立外键关联主表的主键多对多,建立第三张中......
  • (转)主从复制报错Fatal error:The slave I/O thread stops because master and slave ha
    最后发现/var/lib/mysql/auto.cnf还有一个auto.cnf文件,我们直接执行rm-rf/var/lib/mysql/auto.cnf命令删除主机和从机中的这个auto.cnf文件就可以,当然也可以选择修改里面......
  • MySQL-MVCC
    首先MVCC不是MySQL才有的概念,它是一种思想,一种方法论。MVCC全称:Multi-VersionConcurrencyControl多版本并发控制最早于1978年,论文『NamingandSynchronizationina......
  • Mysql常见注意事项小记
    Mysql常见注意事项小记1.排序问题正常如果按照某字段升序排列,空值会排到有值的前面;如果逆序排序空值排在最后。有时候我们需要该字段为空的行数据要排到最......
  • MySQL——基础架构
    1、MySQL逻辑架构图  2、整体解析大体上MySQL可以分为Server层和存储引擎层两部分。Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大......
  • Linux 应用案例开发手册——基于Zynq-7010/20工业开发板
    目录1开发案例说明42Linux常用开发案例42.1tl_led_flash案例42.2tl_key_test案例72.3tl_can_echo案例112.4tcp_udp_demos案例173Python开发案......