1

我对 iOS 5 上的 SQLite 有奇怪的问题。

在 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 语句,一切正常。

任何人都有更好的解决方案,然后手动排序数据?

谢谢,阿尔特姆。

4

1 回答 1

1

iOS 5 中的新版本 SQLite 很可能只是选择了比 iOS 4 中的版本低效率的查询计划。您可以在每个版本中使用EXPLAIN QUERY PLAN来查看是否有明显差异。可能早期版本使用了后期版本未使用的索引。

您也可以尝试使用ANALYZE为查询计划器提供更好的信息,然后再次尝试 EXPLAIN QUERY PLAN。

有时添加/更改索引将有助于 ORDER BY 查询。

于 2012-05-05T17:23:13.807 回答