mysql百万数据加索引前后对比

本文介绍了MySQL中不同类型的索引,包括主键、唯一、普通、全文和多列索引,并通过一个实际案例展示了在百万数据上加普通索引前后的查询速度对比,加索引后查询时间从0.220秒降至0.017秒,显著提升了查询效率。

索引类型

1.主键索引:PRIMARY KEY,只有一个列作为主键,唯一标识,不可重复;

2.唯一索引:UNIQUE,唯一性索引和“普通索引”基本相同,但有一个区别:索引列的所有值都只能出现一次,即值必须唯一,同一张表里的多个列都可以设置唯一索引。

3.普通索引:NORMAL,一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许 NULL 值插入;(是我们经常使用到的索引)

4.全文索引:FULLTEXT,在特定的数据库引擎下才支持,作用是快速定位数据。

5.多列索引:让搜索关键词更高效的一种索引。

一文彻底搞懂Mysql索引

使用案例


##创建一个测试表
CREATE TABLE `index_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(32) DEFAULT NULL,
  `create_date` date DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8;


###创建一个存储函数 (插入1000000条数据)
DROP PROCEDURE IF EXISTS proc_initData;
DELIMITER $
CREATE PROCEDURE proc_initData()
BEGIN
    DECLARE i INT DEFAULT 1;
		DECLARE n VARCHAR(64) DEFAULT '语音助手';
    WHILE i<=1000000 DO
        INSERT INTO index_test(id,name,create_date) VALUES(i,n,now());
        SET i = i+1,n = '语音助手',n=CONCAT(n,i);
    END WHILE;
END $

##最后执行函数
CALL proc_initData();


###创建删除表函数
DROP PROCEDURE if EXISTS pro_deleteData;
DELIMITER $
create procedure pro_deleteData()
BEGIN
    delete  from index_test;
END $
 
##执行删除函数
CALL pro_deleteData();

#查询总数量
select count(id) from index_test;

#添加普通索引
ALTER TABLE `index_test` ADD INDEX index_name ( `name` ) 

#查询
select * from index_test where name ='语音助手8888'

没加索引查询耗时:0.220秒在这里插入图片描述
加上普通索引查询耗时:0.017秒
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

余生一个帆

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

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

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

打赏作者

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

抵扣说明:

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

余额充值