MySQL索引基础

本文介绍了数据库索引的重要性,特别是在大数据量时如何通过索引来提升查询效率。同时,也指出了索引的副作用,如过多的磁盘I/O和CPU使用率。文章详细讲解了主键、唯一索引、普通索引和全文索引的区别,并提供了创建与删除索引的SQL语法。强调了创建索引的原则,如选择经常过滤的字段和避免字段的复杂运算。最后,提到了个人关注的技术领域,如C/C++ Linux服务器开发和Golang DevOps项目实战。

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项目实战

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_Csyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值