加入收藏 | 设为首页 | 会员中心 | 我要投稿 南通站长网 (https://www.0513zz.cn/)- 专有云、图像技术、经验、数据治理、专属主机!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

面试官出的MySQL索引问题

发布时间:2021-03-16 12:07:12 所属栏目:外闻 来源:互联网
导读:篇文章不会讲解索引的基础知识,主要是关于MySQL数据库的B+树索引的相关原理,里面的一些知识都参考了MySQL技术内幕这本书,也算对于这些知识的总结。对于B树和B+树相关的知识,可以参考我的这篇博客:面试官问你B树和B+树,就把这篇文章丢给他 1 索引的管理

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

1 索引的管理

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

1.1 索引的创建方式

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

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

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

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

  •  修改表结构的方式添加索引 
  • .2 主键索引和组合索引创建的方式

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

    组合索引创建方式

    •  创建表的时候同时创建索引 
    • 删除索引

      删除索引可利用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:创建表 
      • 5 Cardinality关键字解析

        在上面介绍了那么多个关键字的意思,但是Cardinality这个关键字非常的关键,优化器会根据这个值来判断是否使用这个索引。在B+树索引中,只有高选择性的字段才是有意义的,高选择性就是这个字段的取值范围很广,比如姓名字段,会有很多的名字,可选择性就高了。

        一般来说,判断是否需要使用索引,就可以通过Cardinality关键字来判断,如果非常接近1,说明有必要使用,如果非常小,那么就要考虑是否使用索引了。

        需要注意的一个问题时,这个关键字不是及时更新的,需要更新的话,需要使用ANALYZE TABLE,例如。

(编辑:南通站长网)

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

    热点阅读