Article
에 많은 양의 열이 있고 데이터베이스에 100,000 개가 넘는 행이 들어 있다고 가정 해 보겠습니다. var articles = db.Articles.ToList()
과 같은 작업을 수행하면 데이터베이스의 각 기사에 대한 전체 기사 모델을 검색하고이를 메모리에 보유하고 있습니까?Entity Framework 효율적인 쿼리
엔트리의 날짜와 제목 만 표시하는 테이블을 채우는 경우 은 엔티티 프레임 워크를 사용하여 데이터베이스에서 이러한 열만 검색하며보다 효율적입니까? this에 따르면
,
객체 맥락에서 반환 된 객체를 추적하는 데 필요한 비용이있다. 객체에 대한 변경을 감지하고 같은 논리 객체에 대한 요청이 동일한 객체 인스턴스를 반환하도록 보장 은 객체가 ObjectContext 인스턴스에 연결되어야합니다. 개체를 업데이트하거나 삭제하려고하지 않고 ID 관리가 필요하지 않은 경우 쿼리를 실행할 때 NoTracking 병합 옵션을 사용하는 것이 좋습니다.
데이터가 변경되거나 삭제되지 않고 NoTracking
으로 표시되어야합니다. 이제 내 쿼리는 var articles = db.Articles.AsNoTracking().ToList()
이됩니다. 더 효율적으로하기 위해해야 할 다른 일이 있습니까?
또 다른 질문은 this answer에 따르면 .Contains(...)
을 사용하면 큰 데이터베이스를 다룰 때 큰 성능 저하가 발생합니다. 대형 데이터베이스의 항목을 검색하는 데 사용하는 권장 방법은 무엇입니까?
BTW : 데이터베이스 테이블이 크기 때문에 '포함'이 느리지 않습니다. 'Contains'는 다음과 같이 묻습니다 : "PropertyXValue = 1 또는 PropertyXValue = 5 또는 PropertyXValue = 7 등등이있는 엔티티를주세요. *"Contains "는 요청하는"OR 값 " 크다. 그런 다음 작은 테이블의 경우에도 빈 테이블의 경우에도 속도가 느립니다. – Slauma