2011-10-31 6 views
0

내 CoreData 데이터 저장소에서 10,000 행을 삭제하고 그 레코드를 개별적으로 반복 할 때마다 너무 오래 걸리는 경우가 있습니다.SQL을 사용하여 DB에서 CoreData 데이터를 직접 삭제

SQL을 사용하여 데이터 저장소에서 직접 삭제하는 방법이 있습니까?

+1

사용중인 코드를 게시 할 수 있습니까? 그렇지 않으면 삭제할 때마다 절약하고 있습니까? –

답변

1

CoreData 저장소를 직접 수정하면 데이터베이스가 손상 될 위험이 있으므로 매우 바람직하지 않습니다. 가장 좋은 방법은 한 번에 삭제할 모든 행을 선택할 수있는 CoreData 쿼리로 삭제하는 것입니다.

손상 될 위험이 있다고 말하면 SQL 쿼리에 문제가있는 것은 아니지만 CoreData는 인덱싱에 도움이되도록 많은 메타 데이터를 데이터베이스에 삽입합니다.

+0

그게 내가 생각한대로 내가 삭제할 객체를 모두로드 한 다음 루프를 모두 거쳐 루프를 삭제해야한다는 것을 알게되면 - 매우 느립니다. – Slee

+0

배열을 모두 한 번에 배열로로드 한 다음 for 문을 모두 삭제 된 것으로 표시 한 다음 한 번씩 커밋을 수행해야합니다. 가능하다면 100 개가 넘는 레코드를 커밋하여 메모리 사용량을 줄여야합니다. 또한 여러 레코드를 사용하여 한꺼번에 가져 오는 것이 아니라로드를 처리해야 할 수도 있습니다. – James

+0

예, 10,000+ 레코드를 처리 할 때 다소 느립니다. 배치 크기로 재생하고 X 레코드 양 다음에 커밋하고 더 나은 성능을 얻을 수 있는지 확인합니다. 감사합니다. – Slee

관련 문제