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日

相关推荐

  • Java自学之异常的捕获与处理

    在程序开发中,程序的编译与运行是两个不同的阶段,编译主要针对的是语法检测,而在程序运行时却有可能出现各种各样的错误导致程序中断执行,那么这些错误在Java中统一称为异常。 异常处理…

    2020年12月11日
    1.5K
  • 网页布局之三栏网页宽度自适应布局

    在工作中经常遇到网页布局错乱的问题,往往引发的这种问题都是因为不同设备不同分辨率而导致。归根结底,是因为前端工程师经验不足,代码写得不够完好。以下是我总结及从网络搜集的一些网页布局…

    2018年10月8日
    3.1K
  • CSS布局之圣杯与双飞翼布局

    所谓圣杯布局和双飞翼布局其实解决的问题是相同的,都是解决左右两栏固定宽度,中间部分自适应,其中某部分内容比其他内容高的时候,保证三者元素等高。他俩的区别就是:圣杯用padding。…

    2019年6月18日
    2.0K
  • CSS中的BFC是什么

    定义 一个块格式化上下文(block formatting context) 是Web页面的可视化CSS渲染出的一部分。它是块级盒布局出现的区域,也是浮动层元素进行交互的区域。 触…

    2022年11月5日
    631
  • Angular环境搭建(Windows 10)

    目前前端开发正处于快速发展阶段,接触angular时,Angular 2刚刚发布,现在第五版也已经发布。由于刚开始没有系统的学习,导致工作中,经常捉襟见肘。现在把自己在工作中踩过的…

    2018年9月5日
    4.2K
  • Webpack入门,自定义loader

    有时开发者会遇到现有loader无法很好满足需求的情况,这时就需要对其进行修改,或者编写新的loader。 下面以一个简单的示例,讲解以下如何实现一个loader。 需求 实现一个…

    2022年11月23日
    888
  • Spring Boot的常用注解

    未来的框架趋势是“约定大于配置”,代码的封装会更加严密。开发人员会将更多的精力放在代码的整体优化和业务逻辑上,所以注解式编程会被更加广泛地使用。那么什么是注解?Spring Boo…

    2024年8月29日
    540
  • 初识Spring Boot

    什么是Spring Boot Spring Boot是由Pivotal Software公司于2013年研发的全新Java开发框架。其设计目的是用来简化新Spring应用的初始搭建…

    2024年6月16日
    626
  • JavaScript 的 this 原理

    有时候会使用一种东西,并不代表你了解它。就像你会写JavaScript代码,能看懂JavaScript代码,但不代表你懂它。 学懂 JavaScript 语言,一个标志就是理解下面…

    2019年8月1日
    1.9K
  • MySQL数据库入门知识点整理

    数据库基本操作 1、创建数据库语句 数据库名称有以下几点要求 不能与已存在的数据库名称相同; 由字母、数字、下划线、@、$和#符号组成; 不能以数字及$符号开头; 标识符不能使用M…

    2020年7月7日
    1.7K

发表回复

登录后才能评论