database - 根据前缀在表中查找单词

标签 database sqlite indexing

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

例。表包含 = "abc""abcd"aef"

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

我目前拥有的是:

select *
from table
where word like 'ab%'

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

最佳答案

如果 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'

关于database - 根据前缀在表中查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17666067/

相关文章:

数据库内存?

database - JPA + Spring 如何用自定义表和数据初始化数据库

android - 如何在折线图 achartengine 中将日期添加到时间序列

sql - 在 VARCHAR 列上创建 INT 索引

database - 函数式编程和数据库交互的最佳实践是什么?

asp.net-mvc - 部署 ASP.Net MVC 应用程序

python-3.x - 无法使用sqlite3在centos 5上编译python3.7

sqlite - 可以创建按星期几排序的查询吗?

java - 子字符串导致字符串索引超出范围错误

indexing - 字符串中单词的架构索引