これはあまり答えにはなりませんが、ここに行きます...
物事を本当に迅速に行うには、データとスキーマ自体の性質からのアイデアが必要になる場合があることがわかりました。たとえば、順序付きリストの検索は、順序なしリストの検索よりも高速ですが、設計と実行の両方でコストを事前に支払う必要があります。
したがって、SQLite が検索する必要があるレコードの数を減らす可能性のあるデータに自然なパーティションがあるかどうかを自問してください。最新の n 件のイベントが特定の期間内にあるかどうかを尋ねる場合があります。それらはすべて過去 7 日間のものでしょうか? 先月?その場合は、より複雑な検索を実行する前に、データのチャンク全体を除外するクエリを作成できます。
また、すぐに動作させることができない場合は、UX の策略を検討することもできます。すっごく多くのエンジニアが、自分の UX を巧みに使いこなせていません。ビュー コントローラーのプッシュの結果として、クエリが実行されますか? 次に、PREVIOUS ビュー コントローラーからバックグラウンド スレッドに移行するように設定し、iOS のアニメーション中に動作させます。プッシュ アニメーションにはどのくらいの時間がかかりますか? 2秒?ユーザーはどの時点で (何らかの UX コントロールを介して)playerids
クエリを実行することをアプリに指示しますか? 彼がそのボタンまたは TVCell に触れるとすぐに、データをプリフェッチできます。したがって、やらなければならない作業の合計がO(n log n)である場合、それはおそらくO(n)とO(log n)の部分に分割できることを意味します。
私が自分のハードワークを避ける間、ちょっと考えてみてください。
より多くの考え
前の n 回の挿入の ID を含む別のテーブルはどうですか? テーブルのサイズが n を超えた場合に、古い ID を削除するトリガーを追加できます。言う..
CREATE TABLE IF NOT EXISTS recent_results
(result_id INTEGER PRIMARY KEY, event_date DATE);
// is DATE a type? I don't know. you get the point
CREATE TRIGGER IF NOT EXISTS optimizer
AFTER INSERT ON recent_results
WHEN (SELECT COUNT(*) FROM recent_results) > N
BEGIN
DELETE FROM recent_results
WHERE result_id = (SELECT result_id
FROM recent_results
WHERE event_date = MIN(event_date));
// or something like that. I have no idea if this will work,
// I just threw it together.
または、アプリのロード時にデータを入力し、アプリの実行中にトランザクションを実行するときに最新の状態に保つ、一時的なメモリ ベースのテーブルを作成することもできます。そうすれば、高額な料金を一度だけ支払うことができます。
もう少し考えてみてください。創造力を働かせてください。通常は、データ構造とアルゴリズムとして必要なものを定義できることを覚えておいてください。幸運を!