MySQL高级——索引 (内附索引高频面试题)

本文深入探讨了MySQL索引的概念,包括其分类、创建、查询和删除的方法。文章通过高频面试题,讲解了MySQL索引的数据结构,如哈希和BTree,以及MyISAM与InnoDB存储引擎的区别。此外,还讨论了索引的优缺点、使用注意事项和优化策略,如最左前缀原则和覆盖索引的应用。
摘要由CSDN通过智能技术生成

目录

 

一、索引介绍以及使用

1.1 什么是索引?

1.2 索引的分类?

1.3 索引的创建、查询、删除 的方式?

 

二、高频面试题(通过面试题更能了解索引)

2.1 什么是索引?

2.2 MySQL索引是什么样的数据结构?

2.3 MySQL中的常用的存储引擎 MyISAM与InnoDB的区别?

2.4 如何选择存储引擎 MyISAM与InnoDB?

2.5 MyISAM与InnoDB实现BTree索引的方式不同在哪?

2.6 为什么要使用索引?(索引的优点?)

2.7 索引是怎么提高查询速度的?

2.8 既然索引这么多好处,为什么不给表中的每一列都创建索引?(索引的缺点?)

2.9 使用索引有哪些注意事项?(使用索引时,SQL语句怎么优化?)

2.10 什么是最左前缀原则?

2.11 什么是覆盖索引?


 

一、索引介绍以及使用

1.1 什么是索引?

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

从官方定义中,我们可以知道索引本质是一种数据结构。

详细一点的解释就是:
数据库除了数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构通过某种方式指向数据。如此一来,就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是 索引。

简单一点的解释就是:
索引是排好序的可快速查找的数据结构。

形象一点的解释就是:
索引就好像是新华字典的查找目录,可以帮助你快速查找到字典中的指定内容。
索引也像是图书馆的书籍查找目录,可以帮你快速查询到你要的书在哪。

 

1.2 索引的分类?

  1. 单值索引:一个索引只包含一个列,一个表可以有多个单列索引。
  2. 复合索引:一个索引包含多个列。
  3. 唯一索引:索引列的值必须是唯一的,但允许有多个空值。

 

1.3 索引的创建、查询、删除 的方式?

索引的创建有两种方法:CREATE 和 ALTER 。

/*ALTER*/
ALTER TABLE tableName ADD [UNIQUE] INDEX idx_name1 (column_name1);

 

/*CREATE*/
CREATE [UNIQUE] INDEX idx_name1 on tableName(colum_name1);

查询索引:

/*查询索引*/
SHOW INDEX FROM tableNmae

删除索引:

/*删除索引*/
DROP INDEX [indexName] ON tableName;

 

下面示范一下

用create创建索引:

 

用alter创建单值索引:

 

创建多值索引:

用alter创建多值索引也类似,这里不演示了。

 

这里顺便说一下命名规范

非唯一索引的命名(单值或多值):idx_字段名   (多值:idx_字段名1_字段名2_字段名3.....)

唯一索引命名:uni_字段名

 

 

二、高频面试题(通过面试题更能了解索引)

 

 

2.1 什么是索引?

索引(Index)是帮助MySQL高效获取数据的数据结构。
(具体的可看上面的索引介绍。)<

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值