数据库中的索引
首先需要明白索引一旦被创建,将由数据库自动管理和维护。
索引的优点:
- 大大加快数据的检索速度
- 强制实施行的唯一性,可以保证表中每一行数据不重复
- 优化查询
索引的缺点
- 创建和维护索引都会消耗时间,当对表中的数据进行增加、删除和修改操作时,索引就要进行维护,否则索引作用就会下降
- 每个索引都会占用一定的物理空间
设计索引的原则
- 对于查询,大量索引可以提高性能,但是会影响增删改,所以应该避免对经常更新的表建立过多的索引
- 对于小型表进行索可能不会产生优化
- 对于主键和外键应该考虑建立索引
- 很少使用的列和值不应该考虑建立索引
- 包含聚合函数是,可以创建索引
- 尽量不要再含有大量重复值的表中建立索引
索引分类
1、普通索引(index):由key或index定义,允许插入重复值和空值
2、唯一索引(unique):值唯一,允许有空值,一个表上可以建立多个unique索引
3、主键索引(primary key):不允许有空值,一个表只能有一个主键索引
4、全文索引(fulltext):只能创建在char、varchar或text类型的字段上
5、空间索引(spatial)
也可以分为:
1、单列索引:在表中单个字段上创建的索引
2、复合索引:在表中多个字段上创建的索引
创建索引的方式
create table....
alter table....
create [unique|fulltext|spatial] index 索引名 on 表名(字段名 [asc|desc])
在student表的sname列上建立一个升序普通索引:
create index 索引名 on student(sname asc)
在sc表的sno和cno列上创建一个唯一复合索引:
create unique index on sc(sno asc,cno desc)
删除索引
drop index 索引名 on 表名
alter table 表名 drop index 索引名