MySQL 添加和删除索引
摘要:介绍添加、删除和显示索引的方法。
今天为大家演示MySQL数据库索引的常见操作,包括创建、删除和查询等。下面首先介绍为什么需要添加索引。
索引的作用
索引用于快速找出在某一列中有一特定值的行。如果不使用索引,MySQL必须从第一条记录开始读完整张表,直到找出相关的行;表越大,查询数据所花费的时间就越多。如果表中查询的列有一个索引,那么MySQL能够快速定位一个位置进而搜索数据文件,避免查检索有数据,从而节省很多时间。
普通索引
普通索引是最基本的索引,它没有任何限制。例如,MyISAM和InnoDB存储引擎只支持BTREE索引,在InnoDB引擎中,数据库创建的索引都是以B+树的形式存在。
这里介绍两种创建普通索引的方式:
① 以修改表结构的方式添加索引:
ALTER TABLE table_name ADD INDEX index_name ON (column(length))
② 创建表的同时创建索引:
CREATE TABLE `test1` (
`id` int(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL COMMENT '姓名',
`course` varchar(20) DEFAULT NULL COMMENT '课程',
`score` int(4) DEFAULT NULL COMMENT '分数',
create_time datetime DEFAULT NULL COMMENT '创建时间',
index [indexName] (name)
) ENGINE=InnoDB CHARACTER SET = utf8mb4 COMMENT = '测试表';
此demo中,同时展示了如何创建表的主键。
创建唯一索引
唯一索引与普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须是唯一的,创建方法和普通索引类似:
ALTER TABLE table_name ADD UNIQUE uk_index_name ( `column` )
下面是创建其它所有的一些方法:
- 添加FULLTEXT(全文索引)
ALTER TABLE table_name ADD FULLTEXT ( `column`)
- 添加组合索引
ALTER TABLE table_name ADD INDEX index_name ( `column1`, `column2`, `column3` )
删除索引和主键
如果创建了某个索引,但是,发现不需要了,就可以使用如下两种方法进行删除:
DROP INDEX index_name ON table;
或者
ALTER table table_name DROP INDEX index_name;
删除主键的方法如下:
ALTER TABLE table_name DROP PRIMARY KEY;
显示索引信息
可以使用 SHOW INDEX
命令列出表中已经创建的索引信息。输出信息通过添加 \G 来格式化,提高可读性。实例如下:
SHOW INDEX FROM table_name\G
唯一索引和普通索引如何选择
唯一索引和普通索引在查询性能上基本没有差别,但在更新上普通索引会快于唯一索引。所以在可以选择普通索引的前提下尽可能选择普通索引。如果需要限制索引列的值必须唯一,则只能使用唯一索引。
结束语
对于Wiener以上的话题,大家又有什么自己的独特见解呢?欢迎在下方评论区留言!
读后有收获,小礼物走一走,请作者喝咖啡。
Buy me a coffee. ☕Get red packets.
作者:楼兰胡杨
本文版权归作者和博客园共有,欢迎转载,但请注明原文链接,并保留此段声明,否则保留追究法律责任的权利。