哪些数据库具有对数方法来提取字符串的所有前缀?
例如:
key
---
air
all
antilope
antivirus
apple
当我查询an
的前缀时,它将返回
key
---
antilope
antivirus
我知道这是有可能的,因为您可以执行一个二进制搜索,询问:给我最小的索引,该索引的大小应大于an
,而较小的索引应小于ao
在大多数数据库中执行此操作的简单方法是使用类似的查询:
select * from my_table where key like 'an%'
我的理解是,它正在执行线性搜索,因此对我而言效率不高。
答案 0 :(得分:1)
使用'an%'
之类的模式,几乎所有数据库都将使用my_table(key)
上的索引。他们之所以可以这样做,是因为模式以恒定值开头。
这是使用基于树的搜索来寻找前缀上的精确匹配项。
某些数据库具有更广泛的索引结构,尤其是Postgres,它们还支持基于文本的搜索。