【问题标题】:How to create and use index?如何创建和使用索引?
【发布时间】:2013-08-20 10:29:21
【问题描述】:

我有 SQLite 数据库表。搜索时非常慢。找到合适的词需要 20-30 秒。原因是我在查询中使用(我必须)加入和 2-3 个 WHERE 子句。

query = "SELECT" + " e.id AS _id," + " ke.id AS ke_id,"
                + " ke.fk as ke_fk," + " ke.value as ke_value,"
                + " re.id AS ke_id," + " re.fk as re_fk,"
                + " re.value as re_value," + " s.id AS  s_id,"
                + " s.fk as s_fk," + " g.id AS g_id," + " g.fk as g_fk,"
                + " g.lang," + " g.value as g_value" + " FROM entry e"
                + "     INNER JOIN k_ele ke ON e.id = ke.fk"
                + "     INNER JOIN r_ele re ON e.id = re.fk"
                + "     INNER JOIN sense s ON e.id = s.fk"
                + "     INNER JOIN gloss g ON s.id = g.fk"
                + " WHERE g.lang IS NULL AND g.value like '"
                + lookingFor + "%'  GROUP BY g.value LIMIT 5";

这是表之间的关系:

我已阅读过有关索引(主要、唯一)的信息。我知道索引时排序值。我的问题是如何创建(我不是在谈论为 id 创建 PRIMARY UNIQUE INDEX,我是在谈论将进行搜索的不是 id 列)并使用该索引来加速搜索查询?以编程方式还是在应用程序中(SQLite Expert Professional)?如果我创建索引,它会在每次搜索时创建索引吗?

请提出您的意见或建议。谢谢。

【问题讨论】:

  • 你使用事务吗?
  • 对不起,它对我有什么帮助?
  • EXPLAIN QUERY PLAN 这个查询的输出是什么?

标签: android sqlite search indexing


【解决方案1】:

LIKE 在任何情况下都非常慢并且不使用索引(如果我错了,请纠正我)。如果您的目标是进行全文搜索,请查看 SQLite 的 FTS3 功能。那里有很多样本。例如:FTS3 blog

【讨论】:

    猜你喜欢
    • 2023-04-04
    • 2015-02-06
    • 1970-01-01
    • 2015-08-27
    • 2014-09-01
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    • 2018-10-28
    相关资源
    最近更新 更多