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)