索引的使用及注意事项

转载请标明出处:http://blog.csdn.net/u013565368/article/details/50755381

1.认识索引

索引是数据库对原始数据的一列或多列进行排序的一种结构,分为聚集索引和非聚集索引。聚集索引就像书的目录一样,排序结构和原表的一致;而非聚集索引就像字典的偏旁查找一样,排序顺序和字典的不一样,只是指出它在哪一页。

索引又分为单列索引和联合索引,单列索引很容易理解,就是对某一列进行排序。联合索引就是对多列排序,第一列为优先列,即优先按照这列排序,相同时再按下一列排序。

2.索引的影响

优点:我们建索引肯定是有目的的,目的就是为了更快的查询。对于索引的查找为什么比全表查询快呢?

  1. 索引的数据量比全表的少,需扫描的数据也就少。
  2. 索引对字段已经排序,可以进行二分法查询。

缺点:索引也不是越多越好的。如果我们对每一列都建立索引,那么需要的额外存储空间将加大,对于插入、更新等操作的速度将降低,因为这些操作都要维护索引,每插入一条,那么需要在每个索引都插入一条,这样效率就降低了。

结论:所谓钱要花在刀刃上,索引也不例外,只对经常查询的字段建索引,不建无用的索引。由于索引降低插入操作速度,因此:

  • 查询频繁,插入少:建索引(一般网站数据都是)
  • 查询少,插入频繁的或字段数据范围小的(如:性别):不建索引
  • 查询多,插入也多:看需求(客户查询,员工插入,那么客户至上,当然速度慢让员工来忍受了)

3.索引的使用

(相关代码基于SQLite)

1.建立单列索引

CREATE INDEX index_name ON tableName(columnName ASC);

2.建立联合索引

CREATE INDEX index_name ON tableName(columnName1 asc,columnName2 DESC); 

3.删除索引

DROP indexNmae;

4.重建索引

REINDEX tableName;
REINDEX indexName1,indexName2;

ps:为了健壮性考虑可以加上 IF NOT EXISTS等语句

4.索引的注意事项

  • 对于联合索引,如果所查询字段不包含优先列,那么将不使用这索引。
  • 对索引插入是在索引尾部插入的,所以在插入次数较多的情况下应重建索引。
  • 触发索引的关键包括但不限于select、where、join、order by.(like无效)
  • and、or连接词对索引来说,前后顺序无关。

作者注:以上皆是本人总结,若有错误遗漏之处,欢迎指出,共同讨论。

2016/2/27 10:32:58

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值