数据库索引
1.什么是索引?
以查字典为例,我们使用字典的时候,不会一页一页的去查找,而是根据汉字的读音或偏旁部首,在字典最前面的拼音目录或偏旁部首目录查询。这些目录就是索引。
创建索引的优点:
使用字典前面的索引可以快速的查到我们所需要的汉字信息,
数据库也一样,创建索引就是为了提高查询效率。在进行查询时,先查索引,根据索引快速查找到所需要的数据。
创建索引的缺点:
1.有了前面的索引目录虽然可以让我们快速的查到想要的汉字,但同时每一页目录都占用了字典的空间。数据库也一样,创建索引,会占用存储空间。
2.如果我们在修订字典时,添加(删除,修改)一个汉字,那么要同时添加(删除,修改)对应的索引。
数据库也一样,创建索引提高了查询效率的同时增、删、改的效率也会降低。
2.六种数据库索引
数据库索引共有六种分别是:普通索引、唯一索引、主键索引、复合索引、全文索引、空间索引。
1.普通索引:对单列创建索引。
2.唯一索引:在添加unique唯一约束时,会自动添加唯一索引。
3.主键索引:在创建primary key主键时,会自动添加主键索引。
4.复合索引:同时在多列上创建索引。
5.全文索引:对全库创建索引。
6.空间索引:对全磁盘空间创建索引。
创建数据库索引:
create [unique][fulltext][spatial] index 索引名 on 表名(列名) ;
删除数据库索引:
drop index 索引名 on 表名;
显示数据库索引:
show index from 表名;
什么情况下会建立索引:
1.经常搜索的列
2.经常用作查询条件的列
3.经常排序、分组的列
4.用作主键/外键的列
什么情况不推荐创建索引:
1.表中仅有几个字段
2.字段的内容仅有几行
注意
1.为什么在查询大量数据的时候不推荐使用select * from 表名 来查询
答:因为在使用select * 查询表数据时,不会使用索引查询。因此查询效率会降低。
2.当where子句中有多个条件表达式时,包含索引列的表达式应该置于其他表达式之前。(首先根据索引列条件进行查询,尽可能多的排除不需要的数据,提高查询效率。)