iOS5のSQLiteは表の結合処理が遅い?
テーブルA, Bがあって、
select A.* from A, B where B.value=? and B.a_id= A._id;
のようにBの条件を使ってAのテーブルデータを取得する、という処理をSQLiteで書いたところ、
iOS6.1では2, 3秒ほどで結果を返してきましたが、
iOS5では、30秒くらいかかりました。
ちなみにBのレコード数は220万ほどです。
(時間は計測していません。体感です。)
これでは使い物にならないので、
select * from B where value=?;
で、Bの結果を取得してからAに問い合わせを行うように変更したところ、
iOS6とほぼ変わらない速度で結果が返って来るようになりました。
inner join使ったりすると速くなったりするかもしれませんが、確かめていません。
ともかく、iOS6だけでテストをやっていると、ちょっと危ないなあと思ったのでした。