一种帮助mysql提高查询效率的数据结构
优点:
1.大大加快查询速度
缺点:
1.维护索引需要耗费数据库资源
2.索引需要磁盘空间
3.当对表的数据进行增删改的时候,因为要维护索引,速度收影响
索引分类
-InnoDB引擎
a主键索引
设定主键后数据库会自动建立索引,innodb为聚簇索引 ,主键索引不能有空
b单值索引 单列索引 普通索引 ---相当于一个列
即一个索引只包含单个列,一个表可以有多个单列索引
c唯一索引
索引列的值必须唯一,但允许有空值 唯一索引索引列值可以存在null,但是只能存在一个null
d复合索引
即一个索引包含多个列 id (name age)index bir
--主键索引是在建表时自动创建
show index from t_user
普通索引的创建
1.建表时创建
create table t_user1(id varchar(20) primary key,name varchar(20),key(name))
但是没办法指定索引名
2.建表之后创建
create index nameindex on t_user(name)
创建的普通索引,普通索引允许为null
唯一索引
1.建表时创建
create table t_user2(id varchar(20) primary key,name varchar(20),unique(name))
2.建表后创建
create unique index nameindex on t_user3(name)
复合索引
1.建表时创建
create table t_user4(id varchar(20) primary key,name varchar(20),age varchar(20),key(name,age))
2.建表后创建
create index nameageindex on t_user(name,age)
面试题符合索引的规则
1.最左前缀原则(只能name ,name age ,name age bir)
2.mysql引擎为了个更好利用索引,在查询过程中会动态调整查询字段顺序以便利用索引
name age bir 给这三个字段加上复合索引
name , age , bir 这三个列组合成的复合索引,如果查询的顺序是 age , bir , name 的,mysql在查询的时候会动态调整顺序为 name , age , bir 从而利用上索引。
name bir age 可以
age bir 不行
bir age name 可以
name bir 不行
age name 可以
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)