ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2022-06-21 16:03:30  阅读:154  来源: 互联网

标签:唯一性 创建 mysql 全文索引 11.2 索引 第十一章 属性


目录

索引是一种特殊的数据库结构,用于提高国内数据性能的重要方式,可以用来快速查询数据表中的特定记录。
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,全文索引,11.2,索引,第十一章,属性
来源: https://www.cnblogs.com/spring2022/p/16397126.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有