Core Data fetch リクエストを実行し、次のような並べ替え記述子を適用するとします。
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO];
createDate
プロパティはインデックス付きプロパティにする必要がありますか? なぜですか、そうでないのですか?
Core Data fetch リクエストを実行し、次のような並べ替え記述子を適用するとします。
NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO];
createDate
プロパティはインデックス付きプロパティにする必要がありますか? なぜですか、そうでないのですか?
データベースのインデックスには価格が伴います。データベースはインデックスを最新の状態に保つ必要があるため、挿入、削除、および場合によっては更新が遅くなります。パフォーマンスを書きます。
しかし、インデックスはクエリと order by 句を高速化します。パフォーマンスを読み取ります。
これは、2 つの間のトレードオフです。あなたにとって最も重要なことは何ですか?読み取りまたは書き込みのパフォーマンス?
さて、インデックスには別の副作用があります: メモリ使用量です。いくつかのエントリを、インデックスなしで 1 回でも並べ替える必要がある場合は、それらをメモリ内で並べ替える必要があります。つまり、それらすべてをメモリにロードします。全体ではなく、少なくとも並べ替えている列。それでも。
いつものように、インストルメンテーションは何が最適かを判断するための最良の方法です。
docs によると、はい、SQL でバックアップされたストアがある場合。述語およびソート記述子は、索引付けの利点が得られるデータベースでコンパイルおよび評価されます。
「フェッチ述語とソート記述子」を参照してください。