数据库索引
其实还不是很懂,原因是没有经历一个表设计的过程,先有个印象吧!!
原地址:https://www.cnblogs.com/interdrp/p/8031087.html 关于索引的分类更详细
索引的优点:
1、通过创建唯一索引,保证数据库表每行数据的唯一性
2、大大加快数据查询速度
3、在使用分组和排序进行数据查询时,可以显著减少查询中分组和排序的时间
索引的缺点:
1、维护索引需要耗费数据库资源
2、索引需要占用磁盘空间,索引文件可能比数据文件更快达到最大文件尺寸
3、当对表的数据进行增删改的时候,因为要维护索引,速度会受到影响
索引的分类:
1. 普通索引 ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
普通索引是可以出现数据重复的
2. 唯一索引 ALTER TABLE `table_name` ADD UNIQUE ( `column` )
唯一索引不允许出现重复
3. 主索引 ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
主索引是一种特殊的唯一索引,不允许有空值
必须为主键字段创建一个索引,这个索引就是所谓的“主索引”。主索引与唯一索引的唯一区别是:前者在定义时使用的关键字是PRIMARY而不是UNIQUE
4. 外键索引 ALTER TABLE `table_name` ADD FULLTEXT ( `column`)
如果为某个外键字段定义了一个外键约束条件,MySQL就会定义一个内部索引来帮助自己以最有效率的方式去管理和使用外键约束条件
5. 复合索引 ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
索引可以覆盖多个数据列,如像INDEX(columnA,columnB)索引。这种索引的特点是MySQL可以有选择地使用一个这样的索引。如果查询操作只需要用到columnA数据列上的一个索引,就可以使用复合索引INDEX(columnA,columnB)。不过,这种用法仅适用于在复合索引中排列在前的数据列组合。比如说,INDEX(A,B,C)可以当做A或(A,B)的索引来使用,但不能当做B、C或(B,C)的索引来使用