MySQL索引概述

这篇具有很好参考价值的文章主要介绍了MySQL索引概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL索引概述

当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此时就需要用索引来加速SQL查询。
由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用的磁盘I/O操作,降低了SQL的查询效率,适得其反,因此掌握良好的索引创建原则非常重要!

索引分类

索引的出现其实就是为了提⾼数据查询的效率,索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种结果。

索引的优点:提高查询效率
索引的缺点:索引并非越多越好,过多的索引会导致CPU使用率 居高不下,由于数据的改变,会造成索引文件的改动,过多的磁盘I/O造成CPU负载太重

索引分类

  1. 普通索引:没有任何限制条件,可以给任何类型的字段创建普通索引(创建新表&已创建表,数量是不限的,一张表的一次SQL查询只能用一个索引)

  2. 唯一性索引:使用UNIQUE修饰的字段,值不能够重复,主键索引就隶属于唯一性索引

  3. 主键索引:使用PRIMARY KEY修饰的字段会自动创建索引(MyISAM,InnoDB)

  4. 单列索引:在一个字段上创建索引

  5. 多列索引:在表中的多个字段上创建索引(uid+cid)。注:多列索引必须使用到第一列,才能用到多列索引,否则索引用不上。

  6. 全文索引:使用FULLTEXT参数可以设置全文索引,只支持CHAR,VARCHAR和TEXT类型的字段上,常用于数据量较大的字符串类型上,可以提高查询速度。(线上项目支持专门的搜索功能,给后台服务器增加专门的搜索引擎支持快速高效的搜索 elasticsearch 简称es C++开源的搜索引擎 搜狗的workflow)

索引创建和删除

创建表的时候指定索引字段

create table index1(
id INT,
name VARCHAR(20),
sex ENUM('male','female'),
INDEX(id,name));

在已经创建的表上添加索引

create [unique] index 索引名 on 表名(属性名(length)[ASC | DESC];
create index nameidx on student(name);

也可以有多个列名构成索引(即,多列索引)

删除索引

drop index 索引名 on 表名;

查看索引

show create table student\G;

注意!!!

  1. 经常作为where条件过滤的字段考虑添加索引
  2. 字符串列创建索引时,尽量规定索引的长度,而不能让索引值的长度key_len过长
  3. 当SQL中索引字段涉及数据类型强转或MySQL函数调用,表达式计算等,索引就用不上了

索引的执行过程

explain查看执行过程
使用explain查看sql的执行计划,分析索引的执行过程。文章来源地址https://www.toymoban.com/news/detail-435256.html

到了这里,关于MySQL索引概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【MySql】MySql索引的作用&&索引的理解

    【MySql】MySql索引的作用索引的理解 索引是与效率挂钩的,所以没有索引,可能会存在问题 索引:提高数据库的性能,索引是物美价廉的东西了。不用加内存,不用改程序,不用调sql,只要执行正确的 create index ,查询速度就可能提高成百上千倍。但是天下没有免费的午餐,

    2024年02月09日
    浏览(41)
  • Mysql索引(2):索引结构

    1 概述 MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的索引结构,主要包含以下几种: 索引结构 描述 B+Tree索 最常见的索引类型,大部分引擎都支持 B+ 树索引 Hash索引 底层数据结构是用哈希表实现的, 只有精确匹配索引列的查询才有效, 不支持范围查询 R-tree(空间

    2024年02月03日
    浏览(47)
  • MySQL索引&ES索引

    按照索引列值的唯一性:索引可分为唯一索引和非唯一索引; 唯一索引:此索引的每一个索引值只对应唯一的数据记录,对于单列唯一性索引,这保证单列不包含重复的值。对于多列唯一性索引,保证多个值的组合不重复。主键索引是唯一索引的特定类型。该索引要求主键中

    2024年02月12日
    浏览(54)
  • 详解MySQL覆盖索引、索引下推

    目录 1.覆盖索引 1.1.概述 1.2.聚集索引、非聚集索引 1.3.回表查询 1.4.覆盖索引 2.索引下推 覆盖索引,是为了避免“回表查询”,从而降低查询耗时的一种使用索引的方法,所以要聊覆盖索引首先我们要知道什么是\\\"回表查询,“回表查询”是因为MySQL的索引结构决定的,是因为

    2024年02月05日
    浏览(45)
  • mysql织梦索引优化之MySQL Order By索引优化

    在一些情况下,MySQL可以直接使用索引来满足一个ORDER BY 或GROUP BY 子句而无需做额外的排序。尽管ORDER BY 不是和索引的顺序准确匹配,索引还是可以被用到,只要不用的索引部分和所有的额外的ORDER BY 字段在WHERE 子句中都被包括了。 使用索引的MySQL Order By 下列的几个查询都会

    2024年02月04日
    浏览(48)
  • Mysql-InnoDB索引:普通索引、主键索引、唯一索引、组合索引

    事务方面 InnoDB支持事务,MyISAM不支持事务。这是Mysql将默认存储引擎从MyISAM变成InnoDB的重要原因之一 外键方面 InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MyISAM会失败 索引层面 InnoDB是聚集(聚簇)索引,MyISAM是非聚集(非聚簇)索引。 MyISAM 支持 FULLTEXT 类型

    2024年02月03日
    浏览(54)
  • PyTorch中的符号索引和函数索引用法

    Pytorch中很多函数都采用的是函数式索引的思路,而且使用函数式索引对代码可读性会有很大提升。 张量也是有序序列,我们可以根据每个元素在系统内的顺序位置,来找出特定的元素,也就是索引。 一维张量的索引 一维张量索引与Python中的索引一样是是从左到右,从0开始

    2024年02月01日
    浏览(31)
  • Mysql 索引(三)—— 不同索引的创建方式(主键索引、普通索引、唯一键索引)

    了解了主键索引的底层原理,主键索引其实就是 根据主键字段建立相关的数据结构 (B+树),此后在 使用主键字段作为条件查询时,会直接根据主键查找B+树的叶子结点。 除了 主键索引外,普通索引和唯一键索引也是如此,只不过普通索引要稍微绕一点,下面会具体介绍。

    2024年02月03日
    浏览(40)
  • 【面试】Mysql主键索引普通索引索引和唯一索引的区别是什么?

    在 MySQL 中, 索引是在存储引擎层实现的, 所以并没有统⼀的索引标准, 由于 InnoDB 存储引擎在 MySQL数据库中使⽤最为⼴泛, 下⾯以 InnoDB 为例来分析⼀下其中的索引模型.在 InnoDB 中, 表都是根据主键顺序以索引的形式存放的, InnoDB 使⽤了 B+ 树索引模型,所以数据都是存储在 B+ 树

    2023年04月17日
    浏览(56)
  • mysql(六)多列索引之索引顺序问题

    使用索引常见的错误是 为每列创建单独的索引, 或者按照错误的顺序创建多列索引 多列索引,是指在创建索引时所关联的字段不是一个字段,而是多个字段,虽然可以通过所关联的字段进行查询,但是只有查询条件中使用了所关联字段中的第一个字段,多列索引才会被使用

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包