Ok, de eerste vraag op dit forum:
Ik heb een db4o database gemaakt met 2 objecten: Person & Child.
De Person heeft als een van de eigenschappen: Child.
Dus bijvoorbeeld:
c = new Child("Child", 12);
p = new Person("Person", 40, c);
db.Set(p);
Het numerieke veld hierboven van Person en Child is _age, dus indexen zien er als volgt uit:
IConfiguration conf = Db4oFactory.Configure();
conf.ObjectClass(typeof(Person)).ObjectField("_age").Indexed(true);
conf.ObjectClass(typeof(Child)).ObjectField("_age").Indexed(true);
db = Db4oFactory.OpenFile(conf, "test.odb");
Wat ik nu wil:
Zoeken op de leeftijd van een Child en daarvan de Person (de 'parent') teruggeven als volgt:
IQuery query = db.Query();
query.Constrain(typeof(Person));
query.Descend("_child").Descend("_age").Constrain(age);
IObjectSet result = query.Execute();
En dit werkt...
Echter, de performance is dramatisch. Toegegeven, de database bevat 1.000.000 Person's en 1.000.000 onderliggende Child's.
Maar klopt dit? Is het op dergelijke wijze query'en van de database inderdaad nog niet optimaal in db4o?
Of moet ik de query anders opstellen?
Groeten,
Ernst