SQLite 索引 ( Index )
索引 索引类似于一本书的目录,使用索引可以大大提高 SQLite 数据的检索速度
打个比方,如果合理的设计且使用索引的 SQLite 是一辆高速公路的话,那么没有设计和使用索引的 MySQL 就是一个人力山村泥泞路
但是,过多的使用索引将会造成滥用
因为索引也有缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行 INSERT、UPDATE 和 DELETE 因为更新表时,SQLite 不仅要保存数据,还要保存一下索引文件
索引的分类
-
从字段数量上来看,索引可以分为 单列索引 和 组合索引
- 单列索引是只由一个字段创建的索引
- 组合索引是由两个或这两个以上字段组成的索引
是否要创建一个单列索引还是组合索引,要考虑到您在作为查询过滤条件的 WHERE 子句中使用非常频繁的列
-
如果值使用到一个列,则选择使用单列索引
-
如果在作为过滤的 WHERE 子句中有两个或多个列经常使用,则选择使用组合索引
-
从数据的唯一性上看,索引可以分为 普通索引 和 唯一索引
-
如果一个字段上创建了普通索引,那么该字段的值是可以重复的
-
唯一索引就是字段的值不能有重复的两行出现
使用唯一索引不仅是为了性能,同时也为了数据的完整性。唯一索引不允许任何重复的值插入到表中
主键索引是一种特殊的唯一索引
-
什么情况下要避免使用索引?
合理使用索引会提高数据库的性能,减少 SQL 语句的执行时间
但不合理的使用,反而会拖累数据库
所以,给一个表创建索引时,要注意以下几点
-
索引不应该使用在较小的表上,数据不过万,创建了反而是累赘
-
如果某个表时常执行更新插入删除操作,那么这个表就不要建立太多索引
-
索引不应该使用在含有大量的
NULL
值的列上 -
索引不应该使用在频繁操作的列上
-
索引不要建立出现大量重复值的字段上,比如性别