您的位置:首页 > 数据库

索引的使用及注意事项

2016-02-27 15:09 288 查看
认识索引

索引的影响

索引的使用

索引的注意事项

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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 索引 数据