在基于前缀的表中查找单词

时间:2013-07-16 00:23:42

标签: database sqlite indexing

我很好奇基于前缀存储和检索大量单词的最佳方法是什么。该表将包含约200,000个单词。我需要根据给定的前缀(长度为2个字符)找到/返回所有匹配的单词

实施例。表包含=“abc”“abcd”aef“

给定前缀“ab”返回“abc”,“abcd”

我目前拥有的是:

select *
from table
where word like 'ab%'

但我觉得这不是最好的实现

2 个答案:

答案 0 :(得分:2)

如果SQLite可以使用索引进行此查找,则此查询非常有效。

LIKE不区分大小写,所以

  • 该列必须包含TEXT affinity,即它应声明为word TEXT或类似的内容;和
  • 索引必须是created as case insensitive,例如:

    CREATE INDEX MyTable_word_index ON MyTable(word COLLATE NOCASE);
    

如果您想要区分大小写的比较,可以使用任何普通索引和一些常规比较运算符:

SELECT *
FROM MyTable
WHERE word >= 'ab'
  AND word <  'ac'

答案 1 :(得分:0)

SELECT * FROM tableName WHERE word LIKE 'ab%'