mysql从入门到精通笔记-第十一章索引

2022/6/22 2:20:01

本文主要是介绍mysql从入门到精通笔记-第十一章索引,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

目录
  • 11.1 索引概述
    • 11.1.1 mysql索引概述
    • 11.1.2 mysql索引的分类
  • 11.2 创建索引
    • 11.2.1 创建数据库时创建索引
    • 11.2.2 创建普通索引
    • 11.2.3 创建唯一性索引
    • 11.2.4 创建全文索引
    • 11.2.5 创建单列、多列索引
    • 11.2.6 创建空间索引
    • 11.2.7 已经存在的表,创建索引
  • 11.3 修改索引
  • 11.3 删除索引

索引是一种特殊的数据库结构,用于提高国内数据性能的重要方式,可以用来快速查询数据表中的特定记录。
mysql中所有的数据都可以被索引,用于快速查询数据库中特定的记录。
索引包括:

  • 普通索引
  • 唯一性索引
  • 全文索引
  • 单列索引
  • 多列索引
  • 空间索引

11.1 索引概述

11.1.1 mysql索引概述

索引是将数据库中单列或者多列值进行排序的结构。(索引是一种结构),使用索引可以大幅提升查询的效率。
1、可以提升查询的速率;
2、可以降低服务器的负载;
3、索引类似于书本的目录,不用遍历所有数据,通过索引即可查询到数据。
索引的劣势:
1、索引需要维护:创建索引、后期的维护耗时;
2、索引需要占用物理存储空间;
3、索引在进行插入等操作因为要插入索引的操作,会消耗时间和性能(可以考虑先删除索引,大量插入数据后再进行新建索引的操作)

总体来说:索引可以提高查询速率,但是需要一定的维护成本。
不同的存储引擎,对每个表的索引的个数和最大长度的定义也不同:所有的存储引擎至少支持16个引擎,每个索引最少256字节长度。
mysql默认使用的是B树的索引方式,也可以使用哈希的方式。

11.1.2 mysql索引的分类

  • 普通索引
    不应用任何约束条件的索引,该索引可以在任何数据类型中创建。用户可以通过该索引进行查询,字段本身的约束条件可以判断其值是否为空或者唯一。
  • 唯一性索引
    使用UNIQUE设置唯一性索引,唯一性索引的的值必须唯一。通过唯一性索引,用户可以快速定位某条记录,另外:主键就是一种特殊唯一索引。
  • 全文索引
    使用FULLTEXT可以定义全文索引,全文索引只对CHAR和VARCHAR或者TEXT生效。查询数据量较大的时候,使用全文索引能够提高查询速度。不过对大小写不敏感。如果索引的列使用二进制排序后,可以执行大小写敏感的全文检索。
  • 单列索引
    只对一列字段进行索引,可以包括普通索引、唯一性索引、全文索引这3种方式进行索引。
  • 多列索引
    多列索引是在表的多个字段上创建的索引,索引指向创建时的对应的多个字段。
    用户可以通过这几个字段进行查询。应该该索引,用户必须使用这些字段中的第一个字段。
  • 空间索引
    空间索引使用SPATIAL参数,空间索引只能建立在空间数据类型上,可以提高系统获取空间数据的效率。
    mysql中只有myisam存储引擎支持空间索引,且索引的字段不能为空。

11.2 创建索引

已经存在的数据表中,至少一列上进行索引的创建,提高数据库查询的速度和服务器的性能。

11.2.1 创建数据库时创建索引

CREATE TABLE 表名称(
    属性名 属性类型 [约束条件],
    属性名 属性类型 [约束条件],
    属性名 属性类型 [约束条件],
    属性名 属性类型 [约束条件]

    [UNIUQE|FULLTEXT|SPATIAL] INDEX或者KEY
    [别名](属性名1 [(长度)] [ASC|DESC])
);
1、索引的类型:UNIQUE-唯一索引、FULLTEXT-全文索引、SPATIAL-空间索引
2、Index和key用户指定字段索引,用户只用选择其中一个即可。
3、可以为索引取一个别名,别名的参数:
(1)属性名1:索引对应的字段名
(2)长度可选,索引的长度,字符串类型才可以使用
(3)ASC/DESC 升序和降序。

11.2.2 创建普通索引

img
img

11.2.3 创建唯一性索引

创建唯一性索引使用UNIQUE关键字进行表的约束。
唯一索引可以约束字段的唯一性,但是有时候并不能提升用户的查询速度,不能实现优化查询的目的。
img

11.2.4 创建全文索引

1、全文索引只能作用于 CHAR、VARCHAR、TEXT类型的属性字段;
2、只用存储引擎MyISAM支持全文检索,InnoDB或者其他存储引擎在5.6后引入支持;
img

11.2.5 创建单列、多列索引

1、创建单列索引,即是在单个属性字段上进行索引的创建;
2、创建多列索引,即是在多个属性字段上进行索引的创建:使用的时候必须要用到第一个字段,索引才会有效。
创建的方法和前面相同。
img
img
只用查询条件使用了第一列,即使用了name才会应用索引。

11.2.6 创建空间索引

1、字段必须要有NOT NULL的约束;
2、使用的字段类型是 geometry 类型才可以使用空间索引。
--后续使用后再补充

11.2.7 已经存在的表,创建索引

和创建表格时,创建索引类似,这里语法结构有点不同。

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name ON 表名(属性[长度|asc|desc]);

img
其他创建各种类型的索引方法类似。

11.3 修改索引

修改索引,起始就添加一个索引。

ALTER TABLE 表名 ADD [UNIQUE|FULTEXT|SPATIAL] INDEX index_name(属性名[len|desc|asc]);
通过修改表来实现

img

11.3 删除索引

不再需要的索引进行删除,节省空间,同时提高性能。

DROP INDEX index_name ON table_name;

img



这篇关于mysql从入门到精通笔记-第十一章索引的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程