程序笔记   发布时间:2022-07-17  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Mysql(10)—索引的概念以及MySQL七种索引类型大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

文章目录

  • 1 索引的概念
  • 2 索引的类型

1 索引的概念

索引(在MySQL中也叫做“键(key)”)是存储引擎用于快速找到记录的一种数据结构࿰c;这也是索引最基本的功能。

索引对于良好的性能非常关键。数据量越大时࿰c;索引对性能的影响也越重要࿰c;好的索引可以将查询性能提高几个数量级。在数据量较小且负载较低时࿰c;不恰当的索引对性能的影响可能还不明显࿰c;但是在数据量逐渐增大时࿰c;糟糕的索引会使MySQL的性能急剧的下降。

索引优化是查询性能优化最有效的手段。

如果想要在一本书中找到某个特定主题࿰c;一般会先看书的目录࿰c;找到对应的页码࿰c;然后直接翻到对应的页码即可查看。在MySQL中࿰c;存储引擎用类似的方法使用索引࿰c;首先在索引中找到对应的值࿰c;然后根据匹配的索引记录找到对应的数据行。简单的说࿰c;数据库索引类似于书前面的目录࿰c;能加快数据库的查询速度。

如下查询:

SELEct name from user where user_id = 5  

如果user_id列上建有索引࿰c;则MySQL将使用该索引找到user_id 为 5的行࿰c;即MySQL现在索引上按值进行查找࿰c;然后返回包含该值的数据行。

索引可以一个或多个列的值࿰c;如果索引包含多个列࿰c;那么列的顺序也很重要࿰c;因为MySQL只能高效地使用最左前缀列。

2 索引的类型

按照功能逻辑区分࿰c;R_971_11845@ySQL目前主要有以下索引类型:

  1. 主键索引
    1. 数据列不允许重复࿰c;不允许为NULL࿰c;一个表只能有一个主键。
    2. alter table table_name ADD PRIMARY KEY (column);
  2. 普通索引
      @H_302_11@mySQL中基本索引类型࿰c;没有什么限制࿰c;允许在定义索引的列中插入重复值和NULL值。一个表允许多个列创建普通索引。
    1. alter table table_name ADD INDEX index_name (column);
  3. 唯一索引
    1. 索引列中的值必须是唯一的࿰c;但是允许NULL值。建立唯一索引的目的大部分时候都是为了该属性列的数据的唯一性࿰c;而不是为了查询效率。一个表允许多个列创建唯一索引。
    2. alter table table_name ADD UNIQUE (column);
  4. 全文索引
    1. 主要是为了快速检索大文本数据中的关键字的信息。字段长度比较大时࿰c;如果创建普通索引࿰c;在进行like模糊查询时效率比较低࿰c;这时可以创建全文索引࿰c;基于倒排索引࿰c;类似于搜索引擎。MyISAM存储引擎支持全文索引࿰c;InnoDB 存储引擎在 MySQL 5.6.4 版本中也开始支持全文索引。
    2. alter table table_name ADD FULLTEXT (column);
  5. 前缀索引
    1. 在文本类型如BLOB、TEXT或者很长的VARCHAR列上创建索引时࿰c;可以使用前缀索引࿰c;数据量相比普通索引更小࿰c;可以指定索引列的长度࿰c;但是数值类型不能指定。
    2. alter table table_name ADD KEY(column_name(prefix_length));
  6. 组合索引
    1. 指多个字段上创建的索引࿰c;只有在查询条件中使用了创建索引时的第一个字段࿰c;索引才会被使用。使用组合索引时遵循最左前缀原则。
    2. 主键索引、普通索引、唯一索引等都可以使用多个字段形成组合索引。例如࿰c;alter table table_name ADD INDEX index_name ( column1, column2, column3 );
  7. 空间索引
      @H_302_11@mySQL在5.7之后的版本支持了空间索引࿰c;而且支持OpENGIS几何数据模型。MySQL在空间索引这方面遵循OpENGIS几何数据模型规则。

资料:

  1. 《 MySQL 技术内幕: InnoDB 存储引擎》
  2. 《高性能 MySQL》

如有需要交流࿰c;或者文章有误࿰c;请直接留言。另外希望点赞、收藏、关注࿰c;我将不间断更新各种Java学习博客!

大佬总结

以上是大佬教程为你收集整理的Mysql(10)—索引的概念以及MySQL七种索引类型全部内容,希望文章能够帮你解决Mysql(10)—索引的概念以及MySQL七种索引类型所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。