微信sqlite本地全文索引搜索是怎么做的呢

微信sqlite本地全文索引搜索是怎么做的呢,第1张

SQLite 索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索。简单地说,索引是一个指向表中数据的指针。一个数据库中的索引与一本书后边的索引是非常相似的。 例如,如果您想在一本讨论某个话题的书中引用所有页面,您首先需要指向索引,索引按字母顺序列出了所有主题,然后指向一个或多个特定的页码。 下面是一个sqlite上建立索引的例子 CREATE INDEX index_name ON table_namesqlite中支持fts表(full-text search的简称),fts3其实是sqlite的一个扩展模块,是虚拟表模块,允许用户去实现全文检索。下面是一个简单的例子: Java代码 CREATE VIRTUAL TABLE enrondata1 USING fts3(content TEXT)可以看到,使用上面的语法即创建了一个fts3的表了,而检索时,根据手册上说的: SELECT count(*) FROM enrondata1 WHERE content MATCH 'linux'/* 0.03 seconds */ SELECT count(*) FROM enrondata2 WHERE content LIKE '%linux%'/* 22.5 seconds */ 看到没?这里是使用match了,而不是传统的like,而且效率很高了。 还支持如下的语法: SELECT * FROM words_fts WHERE words_fts MATCH 'description: company'即列名:该列要搜索的关键词 还可以这样: SELECT * FROM words_fts WHERE words_fts MATCH 'description: comp*' 即支持通配符了 索引主要是针对表中的一列或者是多列建立的升序或者是降序的排列。全文索引是索引的升级,他是针对整个文件的字符匹配。而且建立和全文索引以后就可以对创建了该索引的表进行全文检索.

方法/步骤 首先下载 Navicat for SQLite,下载后解压缩。 运行navicat.exe 这个主程序,在左上角点击连接 在d出窗口中输入连接名,选择类型,然后在下面选择数据库文件,或者数据库保存位置。 这样就在指定位置创建了一个Sqlite数据库文件了

第1条语句,跟create_time索引没关系

第2条语句,应该不会使用create_time索引,因为即便用了索引最后还是要读表数据,还不如直接全表读数据然后在内存中排序快

第3条语句,不知道0到1383525367的create_time选出的记录数相对于全表记录数的比率有多大,太多了应该也不会使用索引,因为最后还是要读一遍表数据,如果比率比较小应该会用上索引


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11411966.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存