您现在的位置是:首页 >学无止境 >数据库索引网站首页学无止境

数据库索引

Wandering in Houhai 2017-10-16 21:43:44
简介索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。


1.FULLTEXT 全文索引

全文索引,仅MyISAM引擎支持。其可以在CREATE TABLE ,ALTER TABLE ,CREATE INDEX 使用,不过目前只有 CHAR、VARCHAR ,TEXT 列上可以创建全文索引。

2.HASH 哈希索引

HASH索引的唯一性及类似键值对的形式十分适合作为索引,HASH索引可以一次定位,不需要像树形索引那样逐层参照,因此具有极高的效率。但是这种高效是有条件的。即只在“=”和“in”条件下高效,对于范围查询,排序及组合索引仍然效率不高。

3.BTREE 树形索引

BTREE所以是一种将索引按一定算法,存入一个树形的数据结构中(二叉树),每次查询都是从树的入口root开始,一次遍历node,获取leaf。这是MySQL中默认也是最常用的索引类型。

4.RTREE

RTREE在MySQL中很少使用,仅支持geometry数据类型,支持该存储引擎只有MyISAM、BDb、InnoDb、NDb、Archive几种。相对于BTREE,RTREE的优势在于范围查找。


普通索引:仅加速查询

唯一索引:加速查询+列值唯一(可以有null)

主键索引:加速查询+列值唯一(不可以有null)+表中只有一个

组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并

全文索引:对文本内容进行分词,进行搜索

外键索引:与主键索引形成联系,保证数据的完整性。


1.符合索引遵循前缀原则

2.like查询%不能再前,否则索引失效。如有需要,使用全文索引

3.column is null可以使用索引

4.如果MySQL估计使用索引比全表扫描慢,则放弃使用索引

5.如果or前的条件中列有索引,后面的没有,索引不会生效。

6.列类型是字符串,查询时,一定要给值加引号,否则索引失效。

7.确定order by 和 group by 中只有一个表的列,这样才能使用索引


梦想加空间!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。