您现在的位置是:首页 >学无止境 >数据库索引网站首页学无止境
数据库索引
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。
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 中只有一个表的列,这样才能使用索引