elasticsearch为何比mysql快

mysql关系型数据库索引原理

数据库的索引是B+tree结构mysql

主键是聚合索引 其余索引是非聚合索引,先从非聚合索引找,见下图sql

 

 

 elasticsearch倒排索引原理

 

 

 二者对比

对于倒排索引,要分两种状况:数据库

一、基于分词后的全文检索

这种状况是es的强项,而对于mysql关系型数据库而言彻底是灾难缓存

由于es分词后,每一个字均可以利用FST高速找到倒排索引的位置,并迅速获取文档id列表elasticsearch

可是对于mysql检索中间的词只能全表扫(若是不是搜头几个字符)分布式

二、精确检索

这种状况我想两种相差不大,有些状况下mysql的可能会更快些大数据

若是mysql的非聚合索引用上了覆盖索引,无需回表,则速度可能更快spa

es仍是经过FST找到倒排索引的位置并获取文档id列表,再根据文档id获取文档并根据相关度算分进行排序,但es还有个杀手锏,即自然的分布式使得在大数据量面前能够经过分片下降每一个分片的检索规模,而且能够并行检索提高效率3d

用filter时更是能够直接跳过检索直接走缓存blog

 

 

 

 

 

 

相关文章
相关标签/搜索