sqlite中数据库中索引与全文检索的区别

如题所述

SQLite 索引(Index)是一种特殊的查找表,数据库搜索引擎用来加快数据检索。简单地说,索引是一个指向表中数据的指针。一个数据库中的索引与一本书后边的索引是非常相似的。
例如,如果您想在一本讨论某个话题的书中引用所有页面,您首先需要指向索引,索引按字母顺序列出了所有主题,然后指向一个或多个特定的页码。 下面是一个sqlite上建立索引的例子
CREATE INDEX index_name ON table_name;

sqlite中支持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*'
即支持通配符了

索引主要是针对表中的一列或者是多列建立的升序或者是降序的排列。全文索引是索引的升级,他是针对整个文件的字符匹配。而且建立和全文索引以后就可以对创建了该索引的表进行全文检索.
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答