2017-02-21 5 views
0

コアデータエンティティにレコードを挿入しています。 レコードがレコードを挿入するのにかかる時間が長くなります。レコードをコアデータに挿入するにはどれくらいの時間がかかりますか?

は、私は私の実体が周りに10000レコードを持つ場合(ループを1つずつ挿入するために)100件のレコードを挿入するために6秒のログを持っています。

私はそのレコードがすでに存在する場合、私は他にそのレコードの挿入を更新してることを挿入しながらチェックしてやっています。

ループの各反復は14リレーショナルテーブルの情報を持っています。

だから、これ大丈夫?または6秒ははるかに多いですか?

+0

おそらく、異なるコンテキストを使用して書き込みや読み取りを行い、間違った方法でコンテキスト間の変更をマージしようとしています。これを把握する機会を与えるコードを投稿してください。 – shallowThought

答えて

1

ありません、それはあまりにも長いです。あなたはそれを誤解している。しかし、より良い方法があります!最初に挿入するすべてのレコードのフェッチフェッチを1回行います。次に、それらがユニークであることを確認しているルックアップキー(おそらく何らかのID)で辞書に格納します。次に、挿入物ごとにフェッチを行うのではなく、辞書をチェックするだけです。あなたは関係がたくさんあるし、自分の中で作成および/または更新方法は、(一意性を保証するために)フェッチを行っている場合はフェッチの量は急速に手から抜け出すことができます。ルックアップ辞書に沿って渡すことで、より多くのフェッチを行う必要がなくなります。もちろん、フェッチが行われたmanagedObjectContextに関係のないスレッドにこれらの辞書を渡さないように注意する必要があります。

+0

hmm、コードのどの部分が時間を費やしているかを特定するデバッグコード –

+0

2017-02-20 19:10:27.254 CFBundleDisplayName [41438:1981146]レコードの挿入 2017-02-20 19:10:3​​4.807 CFBundleDisplayName [41438: 1981146] DB更新 –

関連する問題