- 1.索引的分类:
- 2.基础语法:
- 3.测试索引:
- (1).创建用户表:
- (2).插入一百万条数据
- (3).开始测试:
- 4.索引原则
1.索引的分类:MySQL官方对索引的定义为:索引(Index)是帮助MySQL搞笑获取数据的数据结构。
——>索引的本质:索引是数据结构
-
主键索引(PRIMARY KEY)
唯一的标识,主键不可重复,一个表中只能有一个列作为主键 -
唯一索引(UNIQUE KEY)
避免列重复出现,一个表中的不同列都可以标识唯一索引,即唯一索引可用重复 -
常规索引(KEY/INDEX)
默认的,通过index ,key关键字来设置 -
全文索引(FullText)
在特定的数据库引擎下才有,MyISAM
快速定位数据
-- 显示所有的索引信息 USE school SHOW INDEX FROM student2.基础语法:
-- 索引的使用 -- 1、在创建表的时候给字段增加索引 -- 2、在创建完毕后,增加索引 -- 显示所有的索引信息 USE school SHOW INDEX FROM student -- 增加一个索引 索引名(列名) ALTER TABLE student ADD FULLTEXT INDEX STUname(studentname); -- EXPLAIN 分析sql执行的状况 EXPLAIN SELECt * FROM student -- 非全文索引 EXPLAIN SELECt * FROM student WHERe MATCH(studentName) AGAINST('张');
EXPLAIN
3.测试索引: (1).创建用户表:CREATE TABLE `app_user` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `email` varchar(50) NOT NULL, `phone` varchar(20) DEFAULT '', `gender` tinyint(4) unsigned DEFAULT '0', `password` varchar(100) NOT NULL DEFAULT '', `age` tinyint(4) DEFAULT NULL, `create_time` TIMESTAMP, `update_time` TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8(2).插入一百万条数据
创建函数:
-- 插入100万条数据 DELIMITER $$ -- 写函数之前必须要写,标志 CREATE FUNCTION mock3_data() RETURNS INT BEGIN DECLARE num INT DEFAULT 1000000; DECLARE i INT DEFAULT 0; WHILE i执行函数:
SELECT mock3_data() -- 执行此函数 生成一百万条数据(3).开始测试:不使用索引,查询指定用户 SELECT * FROM app_user WHERe `name`='用户999999'使用索引,查询指定用户 -- 格式id_表名_字段名 -- CREATE INDEX 索引名 ON 表(字段) CREATE INDEX id_app_user_name ON app_user(`name`); SELECt * FROM app_user WHERe `name`='用户999999'结果:在数据量大的时候,使用索引能大大提高查询效率
4.索引原则
- 索引不是越多越好
- 不要对经常变动的数据加索引
- 小数据量的表不需要加索引
- 一般加在常用来查询的字段上
索引的数据结构
Hash类型索引
Btree:InnoDB默认的数据结构
参考文章:MySQL索引背后的数据结构及算法原理欢迎分享,转载请注明来源:内存溢出
评论列表(0条)