문제

다음 쿼리는 반환하는 데 시간이 걸립니다.

db.Query<Person>(x => x.StartsWith("Chr", StringComparison.CurrentCultureIgnoreCase))

이것을 올바르게 작동시키는 방법이 있습니까? 즉, 더 빨리?

도움이 되었습니까?

해결책

어쩌면 당신은 제한을 달성했을 것입니다 DB4O의 쿼리 최적화. 일반적으로 기본 쿼리 및 LINQ Queries는 낮은 수준으로 변환됩니다. 탄산 음료. 이 최적화가 실패하면 DB4O는 쿼리를 실행하기 위해 데이터베이스의 개체를 인스턴스화합니다. 당신이 상상할 수 있듯이 이것은 매우 느릴 수 있습니다.

최신 솔루션은이 경우 소다를 직접 사용하는 것입니다. 예를 들어 하나의 속성이있는 클래스 :

 public class SimpleObject
 {
     private string name;
     public string Name
     {
         get { return name; }
        set { name = value; }
     }
 }

다음과 같은 기본 쿼리 :

var result = db.Query<SimpleObject>(x => x.Name.StartsWith ("Chr",StringComparison.CurrentCultureIgnoreCase));

이 소다 쿼리로 표현할 수 있습니다.

IQuery query = db.Query();
query.Constrain(typeof (SimpleObject)); // restrict to a certain class
query.Descend("name").Constrain("Chr").StartsWith(false); // the field 'name' starts with  'chr', case-insensitive

foreach (var s in query.Execute())
{
    // 
}

쿼리 옵 최대 제이저의 향후 버전 이이 사건을 직접 지원하기를 바랍니다.

다른 팁

비교하는 열의 추가 및 색인은 아마도 도움이 될 것입니다.

http://developer.db4o.com/documentation/reference/db4o-7.4/net35/tutorial/docs/indexes.html#outline219

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top