浅显了解MySQL索引


索引在数据库中是很重要的一个点,很重要,很重要,很重要!重要的事情说三遍!

1、什么是索引

MySQL官方都索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。

一句话来解释:索引是数据结构。

2、索引的分类

  • 主键索引(PRIMARY KEY)

​ 唯一的标识,主键不可重复,只能有一个列作为主键。

  • 唯一索引(UNIQUE KEY)

​ 避免重复的列出现,唯一索引可以重复,多个列都可以标识为 唯一索引。

  • 常规索引(KEY / INDEX)

​ 默认的,index,key关键字来设置。

  • 全文索引(FULLText)

​ 快速定位数据。

3、Mysql如何为表字段添加索引?

1.添加PRIMARY KEY(主键索引)

ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 

2.添加UNIQUE(唯一索引)

ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 

3.添加INDEX(普通索引)

ALTER TABLE `table_name` ADD INDEX index_name ( `column` )

4.添加FULLTEXT(全文索引)

ALTER TABLE `table_name` ADD FULLTEXT ( `column`) 

5.添加多列索引

ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )

4、最左前缀原则

MySQL中的索引可以以一定顺序引用多列,这种索引叫作联合索引。如User表的name和city加联合索引就是(name,city),而最左前缀原则指的是,如果查询的时候查询条件精确匹配索引的左边连续一列或几列,则此列就可以被用到。如下:

select * from user where name=xx and city=xx ; //可以命中索引
select * from user where name=xx ; // 可以命中索引
select * from user where city=xx ; // 无法命中索引            

这里需要注意的是,查询的时候如果两个条件都用上了,但是顺序不同,如 city= xx and name =xx,那么现在的查询引擎会自动优化为匹配联合索引的顺序,这样是能够命中索引的。

由于最左前缀原则,在创建联合索引时,索引字段的顺序需要考虑字段值去重之后的个数,较多的放前面。ORDER BY子句也遵循此规则。

发布了302 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/hello_cmy/article/details/105435463