哪些数据库具有对数方法来获取字符串的所有前缀?
例如:
key
---
air
all
antilope
antivirus
apple
当我查询an
的前缀时,它会返回
key
---
antilope
antivirus
我知道这是可能的,因为您可以执行二叉搜索,询问:给我最小的索引大于an
,小于ao
在大多数数据库中执行此操作的一种简单方法是使用 like 查询:
select * from my_table where key like 'an%'
我的理解是它正在执行线性搜索,因此对我来说效率不高。
使用诸如'an%'
这样的模式,几乎所有数据库都会在my_table(key)
上使用索引。 他们可以这样做,因为模式从常量值开始。
这是使用基于树的搜索来寻找前缀的完全匹配。
一些数据库具有更广泛的索引结构 - 特别是Postgres,并且这些也支持基于文本的搜索。