문제
다음 쿼리는 반환하는 데 시간이 걸립니다.
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())
{
//
}
쿼리 옵 최대 제이저의 향후 버전 이이 사건을 직접 지원하기를 바랍니다.
다른 팁
비교하는 열의 추가 및 색인은 아마도 도움이 될 것입니다.
제휴하지 않습니다 StackOverflow