MySQL的深入浅出(五)—— 索引

数据库索引


作用:

◼提高查询速度
◼确保数据的唯一性
◼可以加速表和表之间的连接,实现表与表之间的参照 完整性
◼使用分组和排序子句进行数据检索时,可以显著减少 分组和排序的时间
◼全文检索字段进行搜索优化

分类:

◼主键索引(PRIMARY KEY)
◼唯一索引(UNIQUE)
◼常规索引(INDEX)
◼全文索引(FULLTEXT)


主键索引(PRIMARY KEY)

主键:
某一个属性组能唯一标识一条记录
如:学生表(学号,姓名,班级,性别等) ,学号就是唯一标识的, 可作为主键

特点:
◼最常见的索引类型
◼确保数据记录的唯一性
◼确定特定数据记录在数据库中的位置

示例:

CREATE TABLE `表名` (
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY, #或 PRIMARY KEY(`GradeID`)
)

唯一索引(UNIQUE)

作用: 避免同一个表中某数据列中的值重复
与主键索引的区别: 主键索引只能有一个 ,唯一索引可有多个
示例:

CREATE TABLE `Grade` (
`GradeID` INT(11) AUTO_INCREMENT PRIMARY KEY,
`GradeName` VARCHAR(32) NOT NULL UNIQUE #或 UNIQUE KEY `GradeID` (`GradeID`)
)

常规索(INDEX)

作用: 快速定位特定数据
注意:
index和key关键字都可设置常规索引
应加在查找条件的字段
不宜添加太多常规索引,影响数据的插入、删除和修改操作
示例:

#创建表时添加
CREATE TABLE `result` ( //省略一些代码
INDEX/KEY `ind` (`studentNo`,`subjectNo`)
)

#创建后追加
ALTER TABLE `result` ADD INDEX `ind` (`studentNo`, `subjectNo`);

全文索引(FULLTEXT)

**作用:**快速定位特定数据
注意:
只能用于MyISAM类型的数据表
只能用于 CHAR 、 VARCHAR、TEXT数据列类型
适合大型数据集

示例

#创建表时添加
CREATE TABLE `student` ( #省略一些SQL语句
FULLTEXT (`StudentName`)
)ENGINE=MYISAM;

#创建后追加
ALTER TABLE employeeADD FULLTEXT (`first_name`);

管理索引

创建索引
创建表时添加
建表后追加: 语法: ALERT TABLE 表名 ADD 索引类型(数据列名)

删除索引
DROP INDEX 索引名 ON 表名
ALTER TABLE 表名 DROP INDEX 索引名
ALTER TABLE 表名 DROP PRIMARY KEY

查看索引
SHOW INDEX(或KEYS) FROM 表名


索引准则

  1. 索引不是越多越好
  2. 不要对经常变动的数据加索引
  3. 小数据量的表建议不要加索引
  4. 索引一般应加在查找条件的字段

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值