我想知道使用祖先查询是否存在任何成本/性能差异。
Query q = em.createQuery("SELECT FROM File f WHERE f.parentID = :parentID AND f.someOtherNumber > :xx");
q.setParameter("parentID", KeyFactory.createKey("User", 2343334443334L));
q.setParameter("xx",233);
//File class with ancestors
@Entity
class File{
@Id
@....
public Key ID;
@Extension(vendorName = "datanucleus", key = "gae.parent-pk", value ="true")
public Key parentID;
};
或者
Query q = em.createQuery("SELECT FROM File f WHERE f.parentID = :parentID AND f.someOtherNumber > :xx");
q.setParameter("parentID", 2343334443334L);
q.setParameter("xx",233);
//File class without ancestors
@Entity
class File{
@Id
@....
public Key ID;
public long parentID;
};
我正在测试一些东西,如果我使用祖先查询,我的索引将不包含不祖先版本的parentID(它与祖先说)。索引/数据存储区的读/写成本是否有所不同?
编写成本可能会略低(索引属性减少一个),但是存储成本可能会稍高(每个子实体的键都包括其所有祖先)。
无论哪种情况,除非您有十亿条记录,否则差异都是微不足道的。根据数据访问方式(即,大多数时间如何访问数据),您将面临更严重的性能/成本差异。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句