C05S11-MySQL数据库索引

一、索引

1. 索引概述

索引是一个排序的列表,在这个列表当中存储了索引的值和这个值对应数据所在的物理地址。使用索引之后,查询数据表时,不用全表扫描来定位数据所在行,而是通过索引直接找到该行数据对应的物理地址,进而访问数据,以提高查询数据的速度。

索引包括普通索引、主键索引、唯一索引、组合索引、全文索引等,主键索引和唯一索引在创建对应的约束后就会自动创建;组合索引是指根据多个字段一起创建索引;全文索引适用于文本的模糊查询。

2. 索引优缺点

索引的优点:

  1. 当数据表的行数较多或者多表查询的时候,使用索引可以提高查询速度。

  2. 降低数据库的I/O成本、排序成本。

  3. 提高表与表之间的连接速度。

  4. 减少分组和排序时间。

  5. 提高数据库的恢复速度。

  6. 可以通过创建唯一索引来保证数据的唯一性。

索引的缺点:

  1. 索引会占据磁盘空间。
  2. 更新数据时消耗的时间会比更新无索引数据表的时间要长。

3. 索引创建原则

索引可以提升数据的查询速度,但并不是所有情况都适合索引。有索引的情况下,数据库会先进行索引查询,然后定位到数据行,如果索引设置不合理,会增加数据库的负担。

  1. 表的主键和外键必须要有索引,默认为索引。
  2. 查询的表条目超过300行以上,可以使用索引。
  3. 与其他关连的字段要设置索引。
  4. 唯一性差的字段不适合设置索引。
  5. 更新频繁的字段不适用于索引。
  6. 频繁用于WHERE子句、GROUP BY子句、ORDER BY子句的字段,要设置索引。、

4. 索引常见操作

  1. 创建普通索引。

    mysql 复制代码
    # 创建数据表时设置
    INDEX 索引名(列名[(length)])
    
    # 创建完数据表时指定
    CREATE INDEX 索引名 ON 表名 (列名[(length)]);
    • length:索引长度,可省略。
  2. 主键索引的创建方式等同于主键约束的创建方式。

  3. 唯一索引除了通过设置唯一约束外,还有下面的创建方法。

    mysql 复制代码
    # 创建数据表时设置
    UNIQUE INDEX 索引名(列名[(length)])
    
    # 创建完数据表时指定
    CREATE UNIQUE INDEX 索引名 ON 表名 (列名[(length)]);
  4. 创建组合索引。

    mysql 复制代码
    # 创建数据表时设置
    INDEX 索引名(列名1[(length)],列名2[(length)]......)
    
    # 创建完数据表时指定
    CREATE INDEX 索引名 ON 表名 (列名1[(length)],列名2[(length)]......);
  5. 创建全文索引。

    mysql 复制代码
    # 创建数据表时设置
    FULLTEXT INDEX 索引名(列名[(length)])
    
    # 创建完数据表时指定
    CREATE FULLTEXT INDEX 索引名 ON 表名 (列名[(length)]);
  6. 删除索引。

    mysql 复制代码
    DROP 索引名 ON 表名;
相关推荐
贵州诚鑫致达科技有限公司5 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
mister_guo5 小时前
MySQL-1267错误:排序规则冲突的原因与解决方案
数据库·mysql
Geek-Chow6 小时前
05.1 · AWS Lambda 版本(Version)详解:$LATEST、不可变快照与限定 ARN
云计算
Lost_the_wind8 小时前
MySQL学习笔记五
mysql
澜山奕秋9 小时前
RHCSA
linux·运维·服务器
Web极客码9 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
cnnews9 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
这个DBA有点耶10 小时前
从时间到语义:时序数据库与向量数据库的核心机制、选型与多模融合趋势
数据库·mysql·架构
SL_staff10 小时前
考勤同步工资核算总出错?破解企业级精准自动化的三个刚性支点
mysql·github·全栈
flytalei10 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu