佛山网站建设开发团队,江都建设局网站李局,中企动力企业邮箱网址,创意设计图案索引是存储引擎用来快速查询记录的一种数据结构#xff0c;按实现方式主要分为Hash索引和B树索引。 按功能划分#xff0c;主要有以下几类 单列索引指的是对某一列单独建立索引#xff0c;一张表中可以有多个单列索引 1. 单列索引 - 普通索引
创建索引#xff08;关键字i…索引是存储引擎用来快速查询记录的一种数据结构按实现方式主要分为Hash索引和B树索引。 按功能划分主要有以下几类 单列索引指的是对某一列单独建立索引一张表中可以有多个单列索引 1. 单列索引 - 普通索引
创建索引关键字index
create table student(id int primary key,card_id varchar(20),name varchar(20),index index_name(name) -- 1.创建表时给name列创建普通索引
);
-- 2.创建表后添加普通索引
create index index_name on student(name);
-- 3.修改表结构添加普通索引
alter table student add index index_name(name);查看索引通用操作
show index from student;删除索引通用操作仅需修改索引名字
drop index index_name on student;
-- 或
alter table student drop index index_name;2. 单列索引 - 唯一索引 与普通索引的区别在于唯一索引列的值必须唯一但可以有空值
创建索引关键字unique
create table student(id int primary key,card_id varchar(20),name varchar(20),unique index_card_id(card_id) -- 1.创建表时给card_id列创建唯一索引
);
-- 2.创建表后添加唯一索引
create unique index index_card_id on student(card_id);
-- 3.修改表结构添加唯一索引
alter table student add unique index_card_id(card_id);3. 单列索引 - 主键索引 MySQL会在主键列上自动创建索引就是主键索引。联合主键也会自动创建对应的组合索引 主键列唯一且不为空所以主键索引是特殊的唯一索引。 4. 组合索引复合索引 组合索引指将多个列合在一起创建索引可以创建组合普通索引组合唯一索引某一列值可以重复但两列合起来不能重复。
创建组合索引
-- 添加组合普通索引
create index index_card_id on student(id,card_id);
-- 添加组合唯一索引
create unique index index_card_id on student(id,card_id); 组合索引的使用符合最左原则例如上面的索引单独查id可以用到组合索引单独查card_id用不到组合索引。 5. 全文索引仅了解
全文索引用来查找文本中的关键字类似于like%模糊匹配关键字为fulltext在大量文本数据查找时速度比like%快N倍只有char、varchar、text及其系列才可以建全文索引全文索引有两个变量最小搜索长度和最大搜索长度只有长度在最小搜索长度~最大搜索长度的文本才能被索引查询。
-- 添加组合普通索引
alter table t_article add fulltext index_content(content);
-- 添加组合唯一索引
create fulltext index index_content on t_article(content); 使用全文索引查询使用match和against关键字不能用like
-- match后跟字段against后跟要模糊匹配的文本
select * from t_article where match(content) against(you);
-- 查询结果与下面语句相同
select * from t_article where content like %you%;6. 空间索引使用很少仅了解 空间索引是对空间数据类型的字段建立的索引MySQL中的空间数据类型有以下4种
空间数据类型含义说明Geometry空间数据任何一种空间类型Point点坐标值LineString线一系列点连接而成Polygon多边形多条线组成
添加空间索引关键字spatial
create table shop_info(id int primary key auto_increment comment id,shop_name varchar(64) not null comment 门店名称,geom_point geometry not null comment 经纬度,spatial key geom_index(geom_point) -- 添加空间索引
);索引内部原理
索引通常以索引文件的形式存储在磁盘中索引查找要产生磁盘I/O消耗而磁盘I/O的消耗远高于内存I/O所以索引的数据结构要尽量减少磁盘I/O的操作次数Hash索引 通过字段值计算出hash值可看作是存储地址类似于书本中的页码直接定位数据 B树索引 二叉树 - 平衡二叉树 - B树 - B树 二叉树 平衡二叉树 B树B-Tree PS没有B减树只有B树英文就是B-Tree-只是为了分隔B和Tree 数据可视化网址https://www.cs.usfca.edu/~galles/visualization/BTree.html B树 数据可视化网址https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html MyISAM存储引擎使用B树作为索引结构叶节点的data域存放的是数据的地址。 InnoDB存储引擎使用B树作为索引结构叶节点的data域存放的是数据比MyISAM效率高一点但占磁盘空间。