sqlite3 - 帮助设计一个更好的表,以便快速搜索~3,000,000个字符串中的单词或句子

时间:2014-07-04 18:47:04

标签: sqlite

假设我有一个文本文件,其中包含约3,000,000个英文句子(每行将被视为一行);当我们想要尽可能快地执行此查询时,保留这么多字符串的最佳设计是什么?

select Sentence from BigTable where Sentence like '% book %'

实际上此查询会搜索使用单词book的所有行;

到目前为止我做了什么:

  1. 创建普通表;结果:

    • 文件大小:~326 MB
    • 查询执行时间:~5.545s
  2. 创建表并在Sentence列上创建索引;结果:

    • 文件大小:~700 MB
    • 查询执行时间:~2.231s

1 个答案:

答案 0 :(得分:2)

如果单词不在字符串的开头,则正常索引无法帮助。

要加快全文搜索,请创建full-text search index

CREATE VIRTUAL TABLE MyTable USING FTS4 (content TEXT);
SELECT docid FROM MyTable WHERE content MATCH 'book';