sqlite快速检索

本文介绍了如何使用SQLite的全文检索功能(FTS3/FTS4)对几十万条数据进行高效查询,相比于普通检索,速度提升上千倍。通过创建虚拟表并演示了插入、修改和查询操作,展示了全文检索在实际应用中的巨大优势。
摘要由CSDN通过智能技术生成

最近用sqlite自带的普通检索,检索大约几十万条数据,速度实在太慢,于是去网上找到了sqlite内置的全文检索,即FTS3/FTS4检索,此文对于FTS3与FTS4检索的区别不做进一步说明。
1. 结论
(1)普通检索:

SELECT * FROM statistics_table WHERE seqnum=1

(2)全文检索:

SELECT * FROM statistics_table WHERE seqnum MATCH %1

通过大量测试,FTS检索速度大约为普通检索的1000倍。

2. 采用虚拟表的全文检索
(1)首先要创建 VIRTUAL TABLE:

CREATE VIRTUAL TABLE pages USING fts3(title, body);

此虚表 pages 包含 title, body 两个文本字段,此外还有一个 docid 整数型的内置字段(你可以自行为 docid 赋值,也可以插入 NULL 让系统自动分配,类似于普通表的id,可自动赋值)。
(2)插入、修改与删除相关数值,与普通表操作无异。

INSERT INTO pages (docid, title, body) VALUES (1, 'hello, world', '"hello, world"is my first word of my study.');
UPDATE pages SET title='hello, world !' WHERE docid=1;

(3)查询操作:
查询操作是FTS表存在的最大意义,两类查询在FTS表上是比较高效。

  • 仅包含rowid的普通查询
SELECT * FROM message WHERE rowid = 2
  • 全文检索
SELECT * FROM message WHERE body MATCH '10010'

参考
sqlite官方关于FTS的说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值