2012-05-05 35 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来确定问题的根本原因。 –