キノコの自省録

日々適当クリエイト

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だけでテストをやっていると、ちょっと危ないなあと思ったのでした。