1500レコードのテーブルを持つiOSアプリがあります。
私はFMDBを使用しており、次のフォームを呼び出しています。
FMDatabase *db = ...
[db executeQuery:@"select num from a where b = ?", 6];
テーブル「a」には「b」のインデックスがあります。
これはシミュレーターでは問題なく動作しますが、iPad1では非常に長い時間がかかります。アプリが強制終了されるまでメモリを消費します。Instrumentsは「sqlite3_prepare_v2」でスタックしていると言います。
元のクエリにも「orderby」句がありました。テストのために削除しました。where句を完全に削除することもできますが、それでもこのように動作します。
何が間違っているのでしょうか?
これが発生する前に、他のクエリが機能しています。以前に別のスレッドからデータベースにアクセスしましたが、他のスレッドからのアクセスはありません。ぶら下がっている取引があるかもしれないと思っていましたが、そうではありません。