MySQL索引

一、索引的定义

定义:索引(index)是帮助MySQL高效获取数据的数据结构,提取句子主干,就可以得到索引的本质:索引是数据结构。

二、索引的分类

在一个表中,主键索引只能有一个,唯一索引可以有多个

  • 主键索引(PRIMARY KEY):唯一标识,主键不可重复,有且只有一个。
  • 唯一索引(UNIQUE KEY):避免重复的列出现,唯一索引可以重复,多个列都可以标识为唯一索引。
  • 常规索引(KEY/INDEX):默认的,index,key关键字来设置
  • 全文索引(FullText):在特定的数据库引擎才有
-- 索引的使用(基础语法)
-- 1、在创建表的时候字段增加索引
-- 2、创建完毕后,增加索引

-- 显示所有的索引信息
SHOW INDEX FROM `shop`

-- 增加一个索引 索引名(列名)
ALTER TABLE shop.account ADD FULLTEXT INDEX `name`(`name`)

-- EXPLAIN 分析sql执行的状况
EXPLAIN SELECT * FROM student -- 非全文索引
EXPLAIN SELECT * FROM student WHERE MATCH(`studentname`)

-- 索引测试
select *from app_user where `name`='用户9999';

explain SELECT *FROM app_user WHERE `name`='用户9999';

-- create index 索引名 on 表(字段)
create index id_app_user_name on app_user(`name`)

索引在大数据量的时候非常有用。

三、索引原则

  • 索引不是越多越好
  • 不要对经常变动的字段加索引
  • 小数据量的表不需要索引
  • 索引一般加在常用的查询字段上

索引的数据结构

Hash类型的索引
Btree:InnoDB的默认数据结构

阅读:https://blog.codinglabs.org/articles/theory-of-mysql-index.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。