当前位置: 首页 > news >正文

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)
http://www.lryc.cn/news/34566.html

相关文章:

  • 微服务进阶之 SpringCloud Alibaba
  • 前端性能优化笔记2 第二章 度量
  • 关于new和delete的一些思考,为什么不能在析构函数中调用delete释放对象的内存空间,new和delete的原理
  • 一场以数字技术深度影响和改造传统实业的新风口,正在开启
  • 【LeetCode】13. 罗马数字转整数
  • 2023/3/8集合之TreeSet HashSet简介 不含代码
  • 【面试1v1实景模拟】面试中常见的Java关键字详解
  • MySQL8.0.16存储过程比5.7.22性能大幅下降
  • 基于MATLAB的无线信道的传播与衰落(附完整代码与分析)
  • SDX62如何查看Kernel版本和Operating System Version Patch Level
  • 001+limou+HTML——(1)HTML入门知识
  • 使用Arduino Uno构建一个巡线机器人
  • 【C++】类和对象(收尾)
  • Linux延迟操作
  • np.insert()函数用法
  • 学习笔记-架构的演进之容器的封装-3月day06
  • Gorm根据关系模型中的属性查询原模型数据
  • 车载技术【USB接口】—Android配件协议AOA【AOA连接】
  • SpringBoot的基本概念和使用
  • 基于计算机软件技术的化工设计特点
  • Nativefier把网页打包成exe
  • STM32U5开发(1)----通过 USART1 发送数据
  • 20230308 Apdl lsdyna两杆撞击案例学习笔记
  • 互相关延时估计 Matlab仿真
  • 谷歌插件Fetch在不同页面之间Cookie携带情况详解
  • Vue学习笔记(8)
  • 知道一个服务器IP应该怎么进入
  • 【计算机基础】Socket IO
  • mingw编译opencv
  • 数据结构(八)排序