为什么数据库中不使用 trie 索引来进行字符串索引?
Why isn't a trie index used in databases for string indexing?
我的问题在标题里。看来Trie树很适合做字符串索引,为什么主流数据库都没有用它作为索引策略
磁盘或SSD都是以块为单位读取的,数据库使用的B+Tree索引就是按照这种结构优化的。 B+Tree 最小化了执行查找时必须读取的平均块数。它们还允许您在不更改太多块的情况下更新索引,并最大限度地利用缓存。
尝试没有这些优势。它们确实提供的一个优势是公共前缀的压缩存储,但对于通常用作数据库键的短字符串来说,这并不是什么优势。有时会构建专门的索引结构来压缩公共前缀,但它们又是围绕存储的块结构设计的。
我的问题在标题里。看来Trie树很适合做字符串索引,为什么主流数据库都没有用它作为索引策略
磁盘或SSD都是以块为单位读取的,数据库使用的B+Tree索引就是按照这种结构优化的。 B+Tree 最小化了执行查找时必须读取的平均块数。它们还允许您在不更改太多块的情况下更新索引,并最大限度地利用缓存。
尝试没有这些优势。它们确实提供的一个优势是公共前缀的压缩存储,但对于通常用作数据库键的短字符串来说,这并不是什么优势。有时会构建专门的索引结构来压缩公共前缀,但它们又是围绕存储的块结构设计的。