如何创建和使用索引?

时间:2013-08-18 14:18:07

标签: android sqlite search indexing

我有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";

这是表之间的关系: enter image description here

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

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

1 个答案:

答案 0 :(得分:0)

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