Name | Mysql | ES |
---|---|---|
索引类型 | B+树 | 倒排索引 |
效率 | 降低树的高度,减少IO次数(磁盘查询) | 将Term Index存入内存,减少IO次数,查询效率更高 |
使用场景 | 适用于存储结构化数据,支持join恋表查询 | 适用于存储非结构化数据,适合全文检索 |
1、倒排索引:
倒排索引的结构如下:
“关键词1”:“文档1”的ID,“文档2”的ID,…………。
“关键词2”:带有此关键词的文档ID列表。
通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。可以看到 lucene 为倒排索引(Term Dictionary)部分又增加一层Term Index结构,用于快速定位,而这Term Index是缓存在内存中的,但mysql的B+tree不在内存中,所以整体来看ES速度更快,但同时也更消耗资源(内存、磁盘)。
2、与其他数据库的比较