我有SQLite数据库表。而搜索它是非常慢的。找到合适的单词需要20-30秒。原因是我在查询中使用了(我必须) join和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创建主唯一索引,我是在谈论将进行搜索的not id列),并使用该索引来加速搜索查询?以编程方式还是在应用程序中(SQLite Expert Professional)?如果我创建索引,它会在每次进行搜索时创建索引吗?
请给出您的意见或建议。谢谢。
发布于 2013-08-19 00:54:52
LIKE在任何情况下都非常慢,并且不使用索引(如果我错了,请纠正我)。如果您的目标是一些全文搜索,请查看SQLite的FTS3功能。外面有无数的样本。例如:FTS3 blog
https://stackoverflow.com/questions/18300030
复制相似问题