搜索 sqlite 数据库的最佳方法

Posted

技术标签:

【中文标题】搜索 sqlite 数据库的最佳方法【英文标题】:Best way to search sqlite database 【发布时间】:2010-11-13 15:24:56 【问题描述】:

在我的应用程序中,我使用的是一个大型数据库。一个表中有近 75000 条记录(总共有 6 个表)。我想一次从三个不同的表中获取数据。我完成了。但是搜索过程很慢。如何优化搜索过程?

【问题讨论】:

如果您发布查询,有人可能会尝试对其进行优化。首先尝试在某些列上创建索引。 我不认为在手机上存储这么多记录是个好主意。我建议(我也在为我正在编写的应用程序这样做)将记录保存在服务器上的某个地方,并通过 SOAP / JSON / 其他方式通过互联网查询它。 【参考方案1】:

您可能需要考虑使用全文搜索引擎并改为发出 SELECT...MATCH 查询。请注意,您需要启用 FTS 引擎(默认情况下禁用)并创建虚拟表而不是常规表。你可以阅读更多关于它的信息here。

【讨论】:

【参考方案2】:

如果无法查看表结构(或查询),我建议的第一件事是向表中添加一些索引。

假设您有一些表格,例如:

Author
    id
    last_name
    first_name

Subject
    id
    name

Book
    id
    title
    author_id
    subject_id

并且您想要获取last_name="Smith"first_name="John" 的作者所写的每本书的所有信息。您的查询可能如下所示:

SELECT * FROM Book b 
    LEFT JOIN Subject s 
        ON s.id=b.subject_id
    LEFT JOIN Author a 
        ON a.id=b.author_id
    WHERE a.last_name='Smith' 
        AND a.first_name='John';

您希望Author 表中的last_name 列有一个索引(可能还有first_name)。

【讨论】:

以上是关于搜索 sqlite 数据库的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

获取 SQLite 上最后插入行的 ID 的最佳方法

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是啥?

使用 Javascript 直接在浏览器中读取 Sqlite3 的最佳方法是啥?

搜索查询的最佳方式是啥?

在 Android SQLite 中处理日期的最佳方式 [关闭]

将 SQL Server 数据库导出到 sqlite(或 SQL Server Compact)的最佳方式