sqlite3全文索引介绍

官方原文地址:http://www.sqlite.org/fts3.html#section_2

好处就是能够快速的进行全文检索,比普通查询快了很多,具体原理看了网上说是增加了B树作为后台临时数据结构什么的,反正也没细究,

我感觉一切快的原因基本上就是独立做了缓存之类的东东~~~


基本用法也比较简单:

1.构建编译支持全文索引,实际上就是支持FTS,这里有两种FTS3和FTS4,我使用的是FTS3,需要增加预编译开关宏,我在VS2010里面就是加了这两个宏:

2.下面我直接上代码,说明使用:

result = sqlite3_exec(db, "create virtual table Table1 USING fts3(ID integer primary key autoincrement, name nvarchar(32) )", nullptr, nullptr, &errmsg);

创建表要加virtual和using fts3等,就算使用了全文技术,好像会生成多余的表,不关心细节;

最关键的就是能用起来:

SELECT rowid, title FROM example WHERE title MATCH 'tea*'
查询时基本向上面这样,使用MATCH方式,具体的语法细节,可参考官方用法,细节就不说了。。。



### 回答1: 创建索引可以使 SQLite 数据库更快地执行查询,但是也会增加插入、更新和删除的时间。因此,在创建索引时,应该考虑查询和修改操作的平衡。 在创建索引时,有几点可以遵循的最佳实践: 1. 使用 WHERE 子句中经常出现的列创建索引。 2. 使用列上的唯一约束或主键创建唯一索引。这有助于防止重复的值。 3. 避免使用过于长的索引,因为这会增加存储和维护索引的成本。 4. 如果表中有大量的 INSERT、UPDATE 或 DELETE 操作,则应谨慎地使用索引。这是因为,在执行这些操作时,SQLite 必须维护索引,这会增加时间成本。 5. 只有在必要时才创建索引。如果表很小,或者查询的数据量很小,则不需要创建索引。 要创建索引,可以使用 CREATE INDEX 语句,格式如下: ``` CREATE INDEX index_name ON table_name (column_1, column_2, ...); ``` 例如,要在名为 "customers" 的表中的 "last_name" 列上创建索引,可以使用以下语句: ``` CREATE INDEX last_name_index ON customers (last_name); ``` ### 回答2: SQLite是一种轻量级的嵌入式数据库,可以在移动设备和桌面应用程序中使用。创建索引是提高SQLite数据库查询性能的重要方法之一。以下是SQLite创建索引的最佳实践: 1. 仅在需要的列上创建索引:索引需要占用存储空间,并且在插入、更新和删除操作时会有额外的维护开销。因此,应该仅仅为那些经常被查询的列创建索引,以减少不必要的资源浪费。 2. 综合考虑查询的频率和选择性:选择性是指索引中不同的键值的唯一性程度。如果查询频率很高但选择性很低,那么创建该索引可能不会带来明显的性能提升。在这种情况下,选择是否创建索引需要综合考虑。 3. 考虑使用组合索引:组合索引是在多个列上创建的索引。如果查询中经常使用多个列进行筛选和排序,那么创建组合索引可以显著提高查询的性能。 4. 选择适当的索引类型:SQLite支持多种索引类型,包括B树索引、哈希索引和全文索引。根据具体情况选择合适的索引类型可以进一步优化查询性能。 5. 定期维护和优化索引:索引的开销和维护量会随着数据量的增加而增加,因此应定期进行索引优化。在数据变动较大的情况下,可以通过重新构建索引或使用VACUUM命令来减少索引碎片和冗余。 总结起来,SQLite创建索引的最佳实践是有选择地在频繁查询的列上创建索引,综合考虑查询频率和选择性。另外,可以使用组合索引和选择合适的索引类型来进一步提高查询性能,定期维护和优化索引以保持数据库的性能。 ### 回答3: SQLite创建索引的最佳实践包括以下几点: 1. 确定需要创建索引的列:分析查询语句中经常用于过滤、排序或连接的列,选择性较高的列更适合创建索引,可以提高查询性能。 2. 考虑创建复合索引:如果多个列经常一起使用,可以考虑创建复合索引,以提高查询效率。复合索引可以在多个列上创建,查询时只需要扫描索引而不是整个表。 3. 避免创建过多的索引:过多的索引会增加维护成本,同时也会增加写操作的开销。只创建必要的索引,避免冗余的索引。 4. 定期重新组织索引:随着数据的增删改,索引的有序性会受到影响,可以定期重新组织索引以提高查询性能。 5. 使用EXPLAIN命令查看查询计划:在执行查询之前,使用EXPLAIN命令查看查询计划,可以判断索引是否被使用,是否需要调整索引。 6. 考虑使用延迟索引:当插入数据的频率较高时,可以考虑使用延迟索引。延迟索引可以在插入数据后再创建索引,以减少写操作的开销。 7. 针对特定类型的查询优化:根据具体的查询需求,可以选择不同类型的索引,如B-Tree索引、哈希索引、全文索引等。 总之,SQLite创建索引的最佳实践是根据具体需求,选择合适的列和索引类型,避免冗余索引,并定期优化和维护索引,以提高查询性能和减少开销。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值