一简介
索引的本质是一种数据结构,可以理解为排好序的快速查找的数据结构
优势:
提高检索效率,降低I/O成本
降低排序成本,减少cpu消耗
劣势:
占空间
降低插入更新数据效率
不断维护更新
二索引分类
主键索引
单值索引
唯一索引
复合索引
三索引结构
B-Tree
B+tree
full-text
全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。
不同于like方式的的查询:
SELECT * FROM article WHERE content LIKE ‘%查询字符串%’;
全文索引用match+against方式查询:
SELECT * FROM article WHERE MATCH(title,content) AGAINST (‘查询字符串’);
明显的提高查询效率。
限制:mysql5.6.4以前只有Myisam支持,5.6.4版本以后innodb才支持,但是官方版本不支持中文分词,需要第三方分词插件。
5.7以后官方支持中文分词。随着大数据时代的到来,关系型数据库应对全文索引的需求已力不从心,逐渐被 solr,elasticSearch等专门的搜索引擎所替代。
hash
R-Tree
四使用场景
主键自动建立唯一索引
频繁作为查询条件的字段
查询中与其他表关联的字段
查询中的排序字段
查询中统计或分组的字段
频繁更新的字段不合适
where条件里用不到的字段不用
高并发下建议用组合索引
五不建议使用
表记录少
经常增删改的表
数据重复且分布平均的字段