mysql五种索引类型(实操版本)

为什么使用索引

最近学习了Mysql的索引,索引对于Mysql的高效运行是非常重要的,正确的使用索引可以大大的提高MySql的检索速度。通过索引可以大大的提升查询的速度。不过也会带来一些问题。比如会降低更新表的速度(因为不但要把保存数据还要保存一下索引),占用磁盘空间等问题。

实操

前期准备

创建一个表,如果有测试的表也可以用(把主键id设置为自增)
2.
如果给字段添加的值有中文 需要将字符集改为UTF-8的格式
3.

保存存储过程,用来添加100w条数据(字段和数据可以自己修改)
delimiter $$ # 定义结束符
drop procedure if exists addTestData; # 存储过程名叫:addTestData
create procedure addTestData()
begin
declare number int;
set number = 1;
while number <= 1000000 #插入N条数据
do
insert into test(id,user_name,`password`,text) #需要添加值得字段
values(null,concat('姓名_',number),concat('密码:',number),concat('账号',number,'密码',number)); # 对应字段的值 
set number = number + 1;
end
while;
end $$

调用存储过程来添加100w条数据
call addTestData();
执行的过程中会比较慢,大家可以使用select语句 查看创建了多少条数据了 select count(id) from test

索引种类(开始实操!)

主键索引 primary(默认添加)

mysql提前给我们创建好了,不需要我们自己创建主键索引。

唯一索引 unique(除主键外的可以代替主键的字段,如手机号,身份证号等)

数据库里边有很多数据是唯一的

sql语句:
SELECT * FROM test where user_name ='姓名_1'
创建唯一索引:
create unique index username ON test(user_name);
普通索引 noraml(常用,而且可能会出现重复的字段 如姓名,住址等)
sql语句:
SELECT * FROM test WHERE `password`='密码:55'
创建普通索引:
create index password on test( password );
全文索引 fulltext(字段类型为文本类型 char varchar 很长的文本 )
查询语句
SELECT * FROM test where text LIKE '%赵'
创建全文索引语句
create fulltext index text on test(text);
创建全文索引后的查询语句
select * from test where match(text) against('赵');

组合索引(最左匹配原则 where name = “” and id= “” 就可以将name,id 设置为组合索引)
示例:
SELECT * FROM `test` where user_name="姓名_10" AND `password`="密码:10"
创建组合索引:
create index (索引名)username、password on (表名)test ((添加索引的字段)user_name, password)

概述:

MySQL支持多种类型的索引,这些索引可以帮助加速查询操作。以下是五种常见的MySQL索引类型以及它们的简要说明:

主键索引(Primary Key Index): 主键索引是一种唯一性索引,用于标识每一行数据的唯一性。通常情况下,数据库表中会有一个主键字段,它可以确保表中的每一行都具有唯一的标识,并且可以更快速地进行查找和连接操作。

唯一索引(Unique Index): 唯一索引与主键索引类似,但允许有一个或多个字段具有唯一性约束,而不一定非要是表的主键。这意味着在唯一索引列中,每个值只能出现一次,用于防止重复数据的插入。

普通索引(Normal Index): 普通索引是最基本的索引类型,用于加速对表中数据的查询操作。它们并不强制唯一性或主键约束,可以在任何列上创建。普通索引适用于常见的查询条件,如WHERE子句中的过滤条件。

全文索引(Full-Text Index): 全文索引是用于全文搜索的一种特殊索引类型。它可以加速针对文本内容的搜索操作,支持对文本字段中的单词进行搜索和匹配。全文索引适用于需要在大段文本中进行关键字搜索的场景,如文章内容、产品描述等。

空间索引(Spatial Index): 空间索引用于处理地理空间数据,例如地理坐标点或多边形区域。它可以加速对空间数据的查询,如查找附近的地点或分析地理位置相关的信息。空间索引在处理地理信息系统(GIS)数据时非常有用。

创建这些索引的语法通常类似,不过具体细节可能会有一些不同。在实际操作中,你可以使用类似以下的SQL语句来创建不同类型的索引:

-- 创建主键索引
ALTER TABLE table_name ADD PRIMARY KEY (column_name);

-- 创建唯一索引
CREATE UNIQUE INDEX index_name ON table_name (column_name);

-- 创建普通索引
CREATE INDEX index_name ON table_name (column_name);

-- 创建全文索引
CREATE FULLTEXT INDEX index_name ON table_name (column_name);

-- 创建空间索引
ALTER TABLE table_name ADD SPATIAL INDEX (column_name);

不同类型的索引在数据库中都有各自的好处,这些好处可以帮助提高查询性能、数据完整性和数据检索效率。以下是各种索引类型的一些好处:

主键索引:

确保每行数据的唯一性,防止重复插入。
快速地根据主键进行数据的查找和连接操作。
唯一索引:

防止重复数据的插入,确保特定列的唯一性。
加速对唯一索引列的查询,提高数据的检索效率。
普通索引:

提高查询性能,加速基于索引列的条件查询。
减少全表扫描的需求,降低查询的时间复杂度。
全文索引:

支持文本内容的全文搜索,使得关键词搜索更加高效。
适用于文章、评论、产品描述等文本数据的搜索场景。
空间索引:

加速地理空间数据的查询,如查找附近的地点或范围内的数据。
支持地理信息系统(GIS)数据的高效处理。
索引的好处在于它们可以大幅提升数据库查询操作的速度,尤其是在大型数据集和复杂查询条件的情况下。通过正确地选择和设计索引,可以避免全表扫描,使得数据库查询更加高效。然而,索引也会带来一些开销,如增加了存储需求、影响插入、更新和删除操作的性能等。因此,在使用索引时需要权衡利弊,并根据具体情况进行优化。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Circ.

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

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

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

打赏作者

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

抵扣说明:

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

余额充值