-
索引的分类
- 主键索引(primary key):唯一的标识,主键不可重复,只能有一个列作为主键
- 唯一索引(unique key):避免重复的列出现,唯一索引可以重复,多个列可以都标识为唯一索引
- 常规索引(key/index):默认的,index、key关键字来设置
- 全文索引(fulltext):在特定的数据库引擎下才有(MyISAM),快速定位数据
-
索引的使用
- 创建表的时候给字段添加索引
- 创建完毕后添加索引
-
显示所有的索引信息:show index from 表名;
-
添加一个全文索引:alter table 表名 add fulltext index 索引名(列名);
-
explain分析sql执行的状况
- 非全文索引:explain select * from 表名;
- 全文索引:explain select * from 表名 where match(索引名) against(值);
-
SQL插入100万条数据
delimiter $$ -- 写函数之前必须写的标志 create function mock_data() returns int begin declare num int default 1000000; declare i int default 0; while i<num do insert into `app_user`(`name`,`email`,`phone`,`sex`,`password`,`age`) values(concat('用户',i),'123123@qq.com', concat('15'floor(rand()*(999999999-100000000)+100000000)), floor(rand()*2),uuid(),floor(rand()*100)); set i = i+1; end while; return i; end; select mock_data();
-
查询上表中的数据
-- 未添加索引 select * from `app_user` where `name` = '用户9999'; -- 1.098sec -- 添加索引 -- create index 索引名 on 表(字段) -- 索引名:id_表名_字段名 create index id_app_user_name on `app_user`(`user`); select * from `app_user` where `name` = '用户9999'; -- 0.001sec
-
索引原则
- 索引不是越多越好
- 不要对进程变动的数据加索引
- 小数据量的表不需要加索引
- 索引一般加载常用来查询的字段上
-
索引的数据结构:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
MySQL索引
最新推荐文章于 2023-07-27 13:48:04 发布