MySQL索引基础

MySQL索引基础,第1张

MySQL索引基础 MySQL索引

当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此时就需要用索引来加速SQL查询。

由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O *** 作。如果索引创建过多,使用不当,会造成SQL查询时,进行大量无用的磁盘I/O *** 作,降低了SQL的查询效率,适得其反,因此掌握良好的索引创建原则非常重要!

索引分类

索引是创建在表上的,是对数据库表中一列或者多列的值进行排序的一种结果。索引的核心是提高查询的速度!

索引的优点: 提高查询效率

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

逻辑上可以分为:

  1. 主键索引,主键字段会自动生成索引
  2. 唯一索引,唯一键默认也会生成唯一索引,但是非聚簇索引
  3. 普通索引,没有任何限制条件,可以给任何类型的字段创建普通索引(创建新表&已创建表,数量是不限的,一张表的一次sql查询只能用一个索引 where a=1 and b=‘M’)
  4. 全文索引,使用FULLTEXT参数可以设置全文索引,只支持CHAR,VARCHAR和TEXT类型的字段上,常用于数据量较大的字符串类型上,可以提高查询速度(线上项目支持专门的搜索功能,给后台服务器增加专门的搜索引擎支持快速高校的搜索 elasticsearch 简称es C++开源的搜索引擎 搜狗的workflflow)
索引的删除与创建

创建表时指定索引字段

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

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

CREATE [UNIQUE] INDEX 索引名 ON 表名(属性名(length) [ASC | DESC]);
//举例
create index pwdidx on t_user(password);

删除索引

DROP INDEX 索引名 ON 表名;
总结
  1. 经常用where过滤的字段要建索引
  2. 字符串创建索引时要注意字符串的强度,不能让key过长
  3. 索引字段涉及强制转换、函数调用、表达式计算等,索引就用不上
个人常用课程

C/C++Linux服务器开发/后台架构师

Golang DevOps项目实战

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5683110.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存