加入收藏 | 设为首页 | 会员中心 | 我要投稿 辽源站长网 (https://www.0437zz.com/)- 云专线、云连接、智能数据、边缘计算、数据安全!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

面试官出的MySQL索引问题,这篇文章全给你解决!

发布时间:2019-10-13 13:35:57 所属栏目:MySql教程 来源:欧阳思海
导读:0 前言 这篇文章不会讲解索引的基础知识,主要是关于MySQL数据库的B+树索引的相关原理,里面的一些知识都参考了MySQL技术内幕这本书,也算对于这些知识的总结。对于B树和B+树相关的知识,可以参考我的这篇博客:面试官问你B树和B+树,就把这篇文章丢给他 1
副标题[/!--empirenews.page--]

 面试官出的MySQL索引问题,这篇文章全给你解决!

0 前言

这篇文章不会讲解索引的基础知识,主要是关于MySQL数据库的B+树索引的相关原理,里面的一些知识都参考了MySQL技术内幕这本书,也算对于这些知识的总结。对于B树和B+树相关的知识,可以参考我的这篇博客:面试官问你B树和B+树,就把这篇文章丢给他

1 索引的管理

索引有很多中类型:普通索引、唯一索引、主键索引、组合索引、全文索引,下面我们看看如何创建和删除下面这些类型的索引。

1.1 索引的创建方式

索引的创建是可以在很多种情况下进行的。

  •  直接创建索引
  1. CREATE [UNIQUE|FULLLTEXT] INDEX index_name ON table_name(column_name(length)) 

[UNIQUE|FULLLTEXT]:表示可选择的索引类型,唯一索引还是全文索引,不加话就是普通索引。

table_name:表的名称,表示为哪个表添加索引。

column_name(length):column_name是表的列名,length表示为这一列的前length行记录添加索引。

  •  修改表结构的方式添加索引 
  1. ALTER TABLE table_name ADD [UNIQUE|FULLLTEXT] INDEX index_name (column(length)) 
  •  创建表的时候同时创建索引 
  1. CREATE TABLE `table` (  
  2.     `id` int(11) NOT NULL AUTO_INCREMENT ,  
  3.     `title` char(255) CHARACTER NOT NULL ,  
  4.     PRIMARY KEY (`id`),  
  5.     [UNIQUE|FULLLTEXT] INDEX index_name (title(length))  

1.2 主键索引和组合索引创建的方式

前面讲的都是普通索引、唯一索引和全文索引创建的方式,但是,主键索引和组合索引创建的方式却是有点不一样的,所以单独拿出来讲一下。

组合索引创建方式

  •  创建表的时候同时创建索引 
  1. CREATE TABLE `table` (  
  2.     `id` int(11) NOT NULL AUTO_INCREMENT ,  
  3.     `title` char(255) CHARACTER NOT NULL ,  
  4.     PRIMARY KEY (`id`),  
  5.     INDEX index_name(id,title)  
  •  修改表结构的方式添加索引 
  1. ALTER TABLE table_name ADD INDEX name_city_age (name,city,age); 

主键索引创建方式

主键索引是一种特殊的唯一索引,一个表只能有一个主键,不允许有空值。一般是在建表的时候同时创建主键索引。

  1. CREATE TABLE `table` (  
  2.     `id` int(11) NOT NULL AUTO_INCREMENT ,  
  3.     `title` char(255) CHARACTER NOT NULL ,  
  4.     PRIMARY KEY (`id`)  

1.3 删除索引

删除索引可利用ALTER TABLE或DROP INDEX语句来删除索引。类似于CREATE INDEX语句,DROP INDEX可以在ALTER TABLE内部作为一条语句处理,语法如下。

(1)DROP INDEX index_name ON talbe_name

(2)ALTER TABLE table_name DROP INDEX index_name

(3)ALTER TABLE table_name DROP PRIMARY KEY

第3条语句只在删除PRIMARY KEY索引时使用,因为一个表只可能有一个PRIMARY KEY索引,因此不需要指定索引名。

1.4 索引实例

上面讲了一下基本的知识,接下来,还是通过一个具体的例子来体会一下。

  •  step1:创建表 
  1.  create table table_index(  
  2.     id int(11) not null auto_increment,  
  3.     title char(255) not null,  
  4.     primary key(id)  
  5. ); 
  •  step2:添加索引

首先,我们使用直接添加索引的方式添加一个普通索引。

  1. CREATE INDEX idx_a ON table_index(title); 

接着,我们用修改表结构的时候添加索引。

  1. ALTER TABLE table_index ADD UNIQUE INDEX idx_b (title(100)); 

最后,我们再添加一个组合索引。

  1. ALTER TABLE table_index ADD INDEX idx_id_title (id,title); 

这样,我们就把前面索引的方式都用上一遍了,我相信你也熟悉这些操作了。

  •  step3:使用SHOW INDEX命令查看索引信息

(编辑:辽源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读