Warm tip: This article is reproduced from serverfault.com, please click

indexing-SQLite中普通索引和FTS有什么区别

(indexing - What's the difference of normal index and FTS in SQLite)

发布于 2020-11-29 12:31:19

两者都使用索引来加快字符串搜索。那有什么区别呢?

在的文档中CREATE INDEX,没有提及tokenization,这使我认为文本列上的普通索引只会加速“ =”查询,而不是MATCH可以匹配段落中单词的更复杂的查询,但是我找不到任何可以确认的来源这个。

Questioner
Minh Nghĩa
Viewed
11
Lukasz Szozda 2020-11-29 21:10:47

这使我认为文本列上的普通索引只会加快“ =”查询

通常,文本列上的标准B树索引会加快SARGable查询的速度,例如:

SELECT col FROM tab WHERE col = 'value'
SELECT col FROM tab WHERE col LIKE 'value'
SELECT col FROM tab WHERE col LIKE 'value%'

但不是:

SELECT col FROM tab WHERE col LIKE '%value%';  
SELECT col FROM tab WHERE col LIKE '%value';
SELECT col FROM tab WHERE UPPER(col) = 'VALUE';

他们仍然可以从索引扫描中受益,而不是从表中受益,但是它的速度不如索引查找。