MySQL数据库基础之索引相关知识点整理

数据库对象索引的出现,除了可以提高数据库管理系统的查找速度,而且还可以保证字段的唯一性,从而实现数据库表的完整性。

MySQL支持6种索引:普通索引、唯一索引、全文索引、单列索引、多列索引和空间索引。

以下情况适合创建索引:

  • 经常被查询的字段,即在WHERE子句种出现的字段
  • 在分组的字段,即在GROUP BY子句中出现的字段
  • 存在依赖关系的子表和父表之间的联合查询,即主键或外键字段
  • 设置唯一完整性约束的字段

以下情况,不适合创建索引

  • 在查询中很少被使用的字段
  • 拥有许多重复值的字段

索引的操作包括创建索引、查看索引和删除索引。

创建和查看普通索引

所谓普通索引,就是在创建索引时,不附加任何限制条件(唯一、非空等限制)。该类型的索引可以创建在任何数据类型的字段上。

语法形式如下:

创建表时创建普通索引

CREATE TABLE table_name (
    属性名 数据类型,
    属性名 数据类型,
    ...
    属性名 数据类型
    INDEX|KEY 【索引名】(属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】 )
)

在已经存在的表上创建普通索引

CREATE INDEX 索引名 ON 表名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)

通过SQL语句ALTER TABLE创建普通索引

ALTER TABLE table_name ADD INDEX|KEY 索引名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)

创建和查看唯一索引

所谓唯一索引,就是在创建索引时,限制索引的值必须时唯一的。通过该类型的索引可以更快速地查询某条记录。

根据创建索引方式,可以分为自动索引和手动索引。

当表中的某个字段被设置成主键或唯一完整性约束时,系统就会自动创建关联该字段的唯一索引。

语法形式如下:

创建表时创建唯一索引

CREATE TABLE table_name (
    属性名 数据类型,
    属性名 数据类型,
    ...
    属性名 数据类型,
    UNIQUE INDEX|KEY 索引名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)
)

在已经存在的表上创建唯一索引

CREATE UNIQUE INDEX 索引名 ON 表名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)

通过SQL语句ALTER TABLE创建唯一索引

ALTER TABLE table_name ADD UNIQUE INDEX|KEY 索引名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)

创建和查看全文索引

全文索引主要关联在数据类型为CHAR、VARCHAR和TEXT的字段上,以便能够更加快速地查询数据量较大的字符串类型的字段。

在默认情况下,全文索引得搜索执行方式为不区分大小写,如果全文索引所关联得字段为二进制数据类型,则以区分大小写得搜索方式执行。

语法形式如下

创建表时创建全文索引

CREATE TABLE table_name (
    属性名 数据类型,
    属性名 数据类型,
    ...
    属性名 数据类型,
    FULLTEXT INDEX|KEY 索引名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)
)

在已经存在得表上创建全文索引

CREATE FULLTEXT INDEX 索引名 ON 表名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)

通过SQL语句ALTER TABLE创建全文索引

ALTER TABLE table_name ADD FULLTEXT INDEX|KEY 索引名 (属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】)

创建和查看多列索引

所谓多列索引,是指在创建索引时,所关联得字段不是一个字段,而是多个字段。虽然可以通过所关联得字段进行查询,但是只有查询条件中使用了所关联字段中得第一个字段,多列索引才会被使用。

语法形式如下

创建表时创建多列索引

CREATE TABLE table_name (
    属性名 数据类型,
    属性名 数据类型,
    ...
    属性名 数据类型,
    INDEX|KEY 索引名  (
        属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
        属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
        ...
        属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
        )
)

在已经存在得表上创建多列索引

CREATE INDEX 索引名
    ON 表名 (
            属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
            属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
            ...
            属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
        )

通过SQL语句ALTER TABLE创建多列索引

ALTER TABLE table_name 
    ADD INDEX|KEY 索引名 (
            属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
            属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
            ...
            属性名【索引所关联的字段的名称】 (长度【可选】) ASC|DESC【可选,排序方式,升|降】,
        )

删除索引

DROP INDEX|KEY 索引名 ON table_name

原创文章,作者:ZERO,如若转载,请注明出处:https://www.edu24.cn/course/mysql-index.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZEROZERO
上一篇 2020年7月7日
下一篇 2020年7月13日

相关推荐

  • 从零开始开发vue组件库

    前言 很早之前,就有开发一套vue组件库的想法,直到现在想法依旧只是想法。汗颜啊……此篇文章将讲述如何开发vue组件库,虽然文章标题为《从零开始开发vue组件库》,实际上是从搭建v…

    2024年6月23日
    754
  • MyBatis配置之properties属性详解

    之前写了一篇《如何搭建MyBatis开发环境》,通过一个简单的实例讲解了关于搭建MyBatis的开发环境,这篇将详细讲解MyBatis的配置。 MyBatis配置文件的层次结构 这…

    2022年4月18日
    844
  • 如何判断一个对象为数组

    使用 instanceof 操作符 原理 instanceof 的内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。 使用 instanceof 判断一个对象…

    2020年7月3日
    1.3K
  • MySQL数据库入门之数据的操作知识点整理

    插入数据记录 插入一条完整数据记录 在上述语句中,参数table_name表示所要插入完整记录的表名,参数fieldn表示表中全部的字段名字,参数valuen表示所要插入的数值,最…

    2020年7月14日
    1.5K
  • 外层有一个自适应高度的div,里面有两个div,一个高度固定300px,另一个怎么填满剩余的高度?

    可以设置外层自适应高度的容器为flex布局,利用flex-basis属性即可实现自动填满剩余高度;代码如下:

    2021年2月22日
    1.4K
  • 封装JDBC工具类,连接MySQL数据库

    JDBC是由java编程语言编写的类及接口组成,同时它为程序开发人员提供了一组用于实现对数据库访问的JDBC API,并支持SQL语言。利用JDBC可以将JAVA代码连接到orac…

    2022年3月31日
    931
  • STS插件mybatis-generator安装及使用

    断断续续学习Java也有好长时间了,没有师傅带,没有项目练手,学习超级慢,也很烦。视频、书籍翻看了一大推,还是没有目标。 相信滴水成海,外加条条大路通罗马,只要坚持,自己终能达成目…

    2019年12月27日
    2.4K
  • JavaWeb入门案例之用户注册

    前言 之前把Java的基础知识系统的过了一遍,目前总算可以看懂Java代码了,接下来就是要学习Java开发框架(主要是springMVC)。 下面用一个用户注册的小案例,来总结一下…

    2021年1月13日
    1.7K
  • css布局基础总结

    前端css布局知识繁杂,实现方式多种多样。想写出高效、合理的布局,必须以深厚的css基础为前提。为了方便记忆和复习,将css布局要点记录如下。内容较多,应用方面说的不太详细,但都是…

    2018年9月13日
    2.4K
  • 曾被问及的一些关于VUE的面试题

    由于没有系统的专研过VUE,关于VUE的一些理论知识点,没有去挖心思记忆及理解,只是在实际工作中知道怎么去使用。所以曾在面试的过程中被人嫌弃过,这一直是小编的痛点,/(ㄒoㄒ)/~…

    2022年4月2日
    896

发表回复

登录后才能评论