2012-05-05 37 views
1

我有使用SQLite奇怪的問題在iOS 5SQLite的iOS 5以上問題

在iOS的應用程序,我有相當大的表(1個000 000 +記錄)。 我有簡單的查詢從表中獲取大約20 000條記錄,然後我通過ORDER BY語句排序結果。這樣的事情:

SELECT table2Field,table3Field,table4Field,table5Field,probability,impact 
FROM table1 
    INNER JOIN table2 ON id2=table1_id2 
    INNER JOIN table3 ON id3=table1_id3 
    INNER JOIN table4 ON id4=table1_id4 
    INNER JOIN table5 ON id5=table1_id5 
WHERE country_id = 0 AND category_id = 0 
ORDER BY table2Field, table3Field, table4Field, ABS(impact) DESC 

在iOS 4上這工作大約2-3秒。然而,在iOS 5上它的工作時間更多。 我試圖找出這個問題的根本原因,但我沒有成功。 有趣的事實是,如果我從查詢中刪除ORDER BY語句一切正常。

任何人有更好的解決方案,然後手動排序數據?

謝謝, Artem。

回答

1

很可能iOS 5中的SQLite新版本只是選擇了效率較低的查詢計劃,而不是iOS 4中的版本。您可以在每個版本中使用EXPLAIN QUERY PLAN以查看是否存在明顯差異。也許早期版本使用的索引不被更高版本使用。

您也可以嘗試使用ANALYZE爲查詢計劃者提供更好的信息,並再次嘗試EXPLAIN QUERY PLAN。

有時添加/更改索引將有助於ORDER BY查詢。

+0

感謝您的回答。 我試圖添加/更改索引,但不幸的是沒有結果。 我將嘗試使用EXPLAIN QUERY PLAN來確定問題的根本原因。 –