MySQL索引管理的使用解读

 更新时间:2025年05月17日 10:16:12   作者:一写就错  
这篇文章主要介绍了MySQL索引管理的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

常见的索引

(1)PRIMARY:主键索引,索引列值唯一且不能为空;一张表只能有一个主键索引。

(2)INDEX:普通索引,索引列没有任何限制。

(3)UNIQUE:唯一索引,索引列的值必须是唯一的,但允许有空值。

(4)FULLTEXT:全文索引,只有MyISAM存储引擎支持。

(5)SPATIAL:空间索引,对空间数据类型的字段建立的索引。

索引的建立与查看

1. 创建数据表的同时建立索引

在 CREATE TABLE 语句中添加一下的语句来实现在创建数据表的同时建立索引。

create table 表名 (
字段1 数据类型 字段属性,
字段2 数据类型 字段属性,
     ...
索引类型 index 索引名 (字段名)
);

例如在student表中,在字段sname上创建普通索引index_sname;

在字段dept字段和sex字段上创建联合索引index_dept_sex;

在remarks字段上创建全文索引ft_remarks。

create table student(
sno char(6) primary key comment '学号',
sname varchar(20) not null comment '姓名',
dept varchar(20) comment '专业',
sex char(1) comment '性别',
birthday date comment '出生日期',
totalcredit decimal(4,1) default 0 comment '总学分',
remarks varchar(100)  comment '备注',
-- 在sname字段上创建普通索引
index index_sname (sname) ,
-- 在dept字段和sex字段上创建联合索引
 index index_dept_sex (dept,sex),
-- 在remarks字段上创建全文索引
fulltext index ft_remarks (remarks)
) engine = MyISAM;

2. 创建数据表后添加索引

可以使用 CREATE INDEX 语句在一个已有的数据表上添加索引

CREATE INDEX 索引名称 ON 数据表名 (列名)

例如在course表cname字段上创建普通索引index_cname。

create index index_cname on course(cname);

在course表cname字段上创建前缀索引索引pf_cname。

create index index_cname on course(cname(4));

3. 使用ALTER TABLE语句建立索引

通过ALTER TABLE 语句直接为已有的数据表建立索引

ALTER TABLE 数据表名 ADD 索引类型 INDEX 索引名称(类名)。

例如在score表的sno字段和cno字段上创建联合唯一索引。

alter table score add unique index index_sno_cno (sno,cno);

4. 查看数据表上的引用

通过SHOW INDEX语句来查看索引.

SHOW INDEX FROM 数据表名

例如显示course表的索引信息。

show index from course;

course 表的索引信息:

参考说明:

  • Non_unqiue:索引字段值是否可以重复,0表示不可以,1表示可以。
  • key_name:索引的名字,如果索引是主键索引,则它的名字为PRIMARY。
  • Seq_in_index:建立索引的字段序号值,联合索引第一个字段为1,第二个字段为2。
  • Column_name:建立索引的字段。
  • Collation:索引字段是否有序,A表示有序,NULL表示没有排序。
  • Cardinality:计算连接时使用索引的可能性,值越大,可能性越高。
  • Sub_part:前缀索引的长度,如4,无前缀则为NULL。
  • Index_type:索引类型,可选值有BTREE、FULLTEXT、HASH、RTREE。

查看索引的使用情况

使用EXPLAIN关键字查看SQL语句中执行索引的使用情况。

例如查看student表中的索引使用信息

explain select * from student where sname like '王%';

查看student表中的全文索引使用信息

explain select * from student where match (remarks) against ('三好学生');

参考说明:

  • id: 查询标识符,默认从1开始,若使用了联合查询,则该值依次递增,联合查询结果对应的该值为NULL。
  • select_type: 操作类型,如DELETE、UPDATE等,担当执行SELECT语句时,它的值有多种,例如,SIMPLE表示不需联合查询或简单的子查询。
  • table: 查询表的名字。
  • partitions: 匹配的分区。
  • type: 取值可为system,const、eq_ref、ref、fulltext等。
  • key: 查询使用到的索引。
  • ref: 表示哪些字段或常量与索引进行比较,例如,const表示常量与索引进行了比较。
  • rows: 预计需要检索的记录数。
  • filtered: 按条件过滤的百分比。
  • Extral: 附加信息,例如,USing index 表示使用了索引覆盖。

索引的删除

1. 使用ALTER TABLE 语句删除索引

ALTER TABLE 表名 DROP INDEX 索引名;

例如删除student表中的index_sname索引。

alter table student drop index index_sname ;

2. 使用DROP INDEX 语句删除索引

DROP INDEX 索引名 ON 表名;

例如删除score表中的index_sno_cno索引。

drop index index_sno_cno on score;

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • linux下源码安装mysql5.6.20教程

    linux下源码安装mysql5.6.20教程

    这篇文章主要为大家详细介绍了linux下源码安装mysql5.6.20教程的相关资料,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01
  • MySQL中随机生成固定长度字符串的方法

    MySQL中随机生成固定长度字符串的方法

    在MySQL中有时需要随机生成数字或字符串,随机生产数字可直接使用rand()函数,但是要随机生成字符串就比较麻烦。
    2010-12-12
  • MySQL DDL 引发的同步延迟该如何解决

    MySQL DDL 引发的同步延迟该如何解决

    这篇文章主要介绍了MySQL DDL 引发的同步延迟该如何解决,帮助大家更好的理解和学习使用MySQL数据库,感兴趣的朋友可以了解下
    2021-05-05
  • 快速理解MySQL中主键与外键的实例教程

    快速理解MySQL中主键与外键的实例教程

    这篇文章主要介绍了MySQL中主键与外键的区别和联系,是MySQL入门学习中的基础知识,需要的朋友可以参考下
    2015-11-11
  • MyBatis动态SQL、模糊查询与结果映射操作过程

    MyBatis动态SQL、模糊查询与结果映射操作过程

    本篇所讲的动态SQL,是mybatis通过标签元素的形式, 如if, choose, when, otherwise, trim, where, set, foreach等标签完成对sql的拼接功能,使用起来也非常灵活方便,这篇文章主要介绍了MyBatis动态SQL、模糊查询与结果映射,需要的朋友可以参考下
    2023-08-08
  • MySQL如何新建用户并授权

    MySQL如何新建用户并授权

    本文主要介绍了如何在MySQL中创建新用户并管理其权限,包括增删改查、创建表、删除表等操作,文中详细说明了MySQL 5.7.18和MySQL 8.0版本中的权限配置,以及如何根据需要添加或删除权限的步骤,旨在提供实用的数据库管理技巧
    2024-10-10
  • 将MySQL的临时目录建立在内存中的教程

    将MySQL的临时目录建立在内存中的教程

    这篇文章主要介绍了将MySQL的临时目录建立在内存中的教程,以获得不关机情况下的高性能使用,需要的朋友可以参考下
    2015-04-04
  • MySQL中NULL对索引的影响深入讲解

    MySQL中NULL对索引的影响深入讲解

    这篇文章主要给大家介绍了关于MySQL中NULL对索引的影响的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • mysql 索引分类以及用途分析

    mysql 索引分类以及用途分析

    MySQL索引分为普通索引、唯一性索引、全文索引、单列索引、多列索引等等。这里将为大家介绍着几种索引各自的用途。
    2011-08-08
  • MySQL导致索引失效的几种情况

    MySQL导致索引失效的几种情况

    本文主要介绍了MySQL导致索引失效的几种情况,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论