2013-08-16 159 views
0

我有大的SQLite數據庫(45MB)。我使用INNER JOIN從不同的表中獲取數據。但是,它運行速度很慢。也許它取決於我正在測試的手機(三星Galaxy Ace)。應該做什麼才能使查詢速度非常快? 一)創建表來創建新表)的索引 B),其中將包括表,我需要 C其他方式,你reccomend什麼是搜索查詢的最佳方式?

enter image description here

我拿着表:入口,r_ele,k_ele,感,光澤與JOIN。

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 "; 
+1

請發表表格結構和查詢,以便我們提供幫助。 –

+0

添加了表結構... –

+0

添加了查詢.... –

回答

0

如果你有一個大型的數據庫,並且在飛行中做了這麼多的連接,性能肯定會很慢。我有類似的問題。我解決它的方式是通過在應用程序初始化時加入相應表來創建具有所需列的臨時表。

如果您的數據是動態的,您需要在需要時更新臨時表中的數據。但是,如果更改後的數據的大小並不那麼大,更新不會真的產生任何性能問題。

創建臨時表的好處是,更長的操作只有一次,它在啓動。

相關問題