MySQL数据库索引——(八)

MySQL数据库索引——(八)

9.1数据库索引

  • MySQL官方对索引定义为:索引(index)是帮助MySQL高效获取数据的数据结构,提取句子主干,就可以得到索引的本质:索引是数据结构。

9.2索引的分类

  • 主键索引 (Primary Key)
  • 唯一索引 (Unique)
  • 常规索引 (KEY/Index)
  • 全文索引 (FullText)
I.主键索引 (Primary Key)

作用:一张表中能唯一标识一条记录的一个列

特点:

  • 唯一的标识,不可重复,只能有一个列作为主键
  • 能够确保数据记录的唯一性
  • 能记录数据在数据库中的位置
ii.唯一索引 (Unique)

作用:避免同一张表重复的列出现,唯一索引可以重复,多个列都可以有标识位(唯一索引)

iii.常规索引 (KEY/Index)

作用:快速定位需要拿到的数据(默认的)

IV.全文索引 (FullText)

作用:快速定位数据

注意:在特定的数据库引擎下才有,例如MySAM类型的数据表,且只能用于CHAR , VARCHAR , TEXT数据列类型,适用于大型数据集

9.4索引的使用

![explain2](F:\图片库\explain2.PNG)![explain2](F:\图片库\explain2.PNG)-- 索引的使用
-- 1.在创建表的时候给字段增加suoyin
CREATE TABLE `student` (
  `StudentNo` INT(4) NOT NULL COMMENT '学号',
  `LoginPwd` VARCHAR(20) DEFAULT NULL,
  `StudentName` VARCHAR(20) DEFAULT NULL COMMENT '学生姓名',
  `Sex` TINYINT(1) DEFAULT NULL COMMENT '性别,取值0或1',
  `GradeId` INT(11) DEFAULT NULL COMMENT '年级编号',
  `Phone` VARCHAR(50) NOT NULL COMMENT '联系电话,允许为空,即可选输入',
  `Address` VARCHAR(255) NOT NULL COMMENT '地址,允许为空,即可选输入',
  `BornDate` DATETIME DEFAULT NULL COMMENT '出生时间',
  `Email` VARCHAR(50) NOT NULL COMMENT '邮箱账号,允许为空,即可选输入',
  `IdentityCard` VARCHAR(18) DEFAULT NULL COMMENT '身份证号',
  PRIMARY KEY (`StudentNo`),-- 主键索引
  UNIQUE KEY `IdentityCard` (`IdentityCard`),-- 唯一索引
  KEY `Email` (`Email`)-- 常规索引
) ENGINE=MYISAM DEFAULT CHARSET=utf8;
-- 2、在创建表完毕后,增加索引
-- 增加一个全文索引
-- 格式:ALTER TABLE 数据库.表名 ADD FULLTEXT INDEX 索引名(字段名);
ALTER TABLE school.student ADD FULLTEXT INDEX `studentName`(`studentname`);
-- 增加一个常规索引
-- 格式:CREATE INDEX 索引名 ON 表名(字段);
CREATE INDEX GradeId_student ON student(GradeId);
-- 显示所有的索引
SHOW INDEX FROM student;

-- EXPLAIN分析sql执行的状况
EXPLAIN SELECT * FROM student;-- 非全文索引
EXPLAIN SELECT * FROM student WHERE studentname = '刘%'
EXPLAIN SELECT * FROM student WHERE MATCH(studentname) AGAINST('刘');

未使用全文索引

explain1.PNG
使用全文索引

explain2.PNG

注意:

  • 索引不是越多越好
  • 不要对经常变动的数据加索引
  • 小数据量的表建议不要加索引
  • 索引一般应加在查找条件的字段
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QZP51ZX

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值