连接表:一个是普通表,另一个是 FTS 虚拟表

Ham*_*Dar 2 sqlite full-text-search fts4

将普通表与 FTS 表连接是个好主意吗?我想知道这是否会影响FTS表的原始性能?当然,查询肯定会使用 MATCH 子句。

CL.*_*CL. 5

当您连接两个表A时,SQLite 要么从表中的表中B查找匹配的记录,要么从表中的表中查找匹配的记录。ABBA

如果表上有索引A或者B使这些查找速度更快,那么连接就会很快。如果两个表上都有索引,SQLite 会选择它估计效率更高的一个。

因此,回答您的问题:如果您满足以下任一条件,则与 FTS 表的联接将是高性能的:

  • 使用 , 将字段连接到 FTS 字段MATCH,或者连接到 FTS 表的rowid, 或
  • 将 FTS 字段连接到另一个表中索引的某个字段。

要检查这一点,请使用EXPLAIN QUERY PLAN.