Mysql索引查询 和 普通查询的时间差距 测试数据1百万条+(微量索引知识)

本文深入探讨了数据库索引的不同类型及其工作原理,包括全文索引、唯一索引等,并介绍了如何选择合适的索引以提高查询效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看一下数据表字段内容
一共1444000条数据

id默认主键自增 拥有主键索引

测试 查询单条 id
在这里插入图片描述
结果在毫秒级响应

测试 查询名称 name # 没有添加索引

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同样的sql运行了3次
结果都在10秒以上

接下来给 name字段添加索引
在这里插入图片描述

再此普及一下 索引知识


#1 索引种类:
	1. Fulltext 全文本搜索索引:用于搜索长篇文章。

	2. Unique 唯一索引:  

 	 主键索引:primary key :加速查找+约束(不为空且唯一)
	  唯一索引:unique:加速查找+约束 (唯一)
  
	3. 联合索引:

 	   -primary key(id,name):联合主键索引
 	   -unique(id,name):联合唯一索引
 	   -index(id,name):联合普通索引
    
	4. Normal 普通索引:加快搜索。
	5. Spatial 空间索引。

#2 索引的两大类型hash与btree
	#我们可以在创建上述索引的时候,为其指定索引类型,分两类
	hash类型的索引:查询单条快,范围查询慢
	btree类型的索引:b+树,层数越多,数据量指数级增长(我们就用它,因为innodb默认支持它)
 
	1)索引方法 btree  可以用于“ ><=”查询 ,如果查id=1000的数据 建立索引后 二分查找最多13次就可	以查出相应的数据;

	2)hash 不能做order by排序 不能做 用like模糊查询。

由此可知 name 添加的普通索引 Normal 索引方法 选用的 btree

在这里插入图片描述
结果在 毫秒级响应
*

测试 idcard 没加索引

在这里插入图片描述
响应时间和上面一样 太长
因为idcard 这种一般存储 的值不会重复和相同 所以用 Unique 唯一索引
在这里插入图片描述
一样 毫秒级的响应速度
*

最后说一下 Fulltext 索引

全文索引
在一般情况下,模糊查询都是通过 like 的方式进行查询。但是,对于海量数据,这并不是一个好办法,在 like “value%” 可以使用索引,但是对于 like “%value%” 这样的方式,执行全表查询,这在数据量小的表,不存在性能问题,但是对于海量数据,全表扫描是非常可怕的事情,所以 like 进行模糊匹配性能很差。

这种情况下,需要考虑使用全文搜索的方式进行优化。全文搜索在 MySQL 中是一个 FULLTEXT 类型索引。FULLTEXT 索引在 MySQL 5.6 版本之后支持 InnoDB,而之前的版本只支持 MyISAM 表。

全文索引主要用来查找文本中的关键字,而不是直接与索引中的值相比较。fulltext索引跟其它索引大不相同,它更像是一个搜索引擎,而不是简单的where语句的参数匹配。fulltext索引配合match against操作使用,而不是一般的where语句加like。目前只有char、varchar,text 列上可以创建全文索引。

小技巧:
在数据量较大时候,先将数据放入一个没有全局索引的表中,然后再用CREATE index创建fulltext索引,要比先为一张表建立fulltext然后再将数据写入的速度快很多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Heart&Fire

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

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

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

打赏作者

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

抵扣说明:

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

余额充值