我在DQL查询中使用注释有两个具有一对多关系的实体。这两个查询之间有什么区别?
1 -
SELECT p, c FROM AcmeStoreBundle:Product p
JOIN p.category c
WHERE p.id = :id
2 -
SELECT p, c FROM AcmeStoreBundle:Product p
JOIN AcmeStoreBundle:Category c
ON p.categoryid = c.id
WHERE p.id = :id
当我检查基准时,我发现第二种方法花费的时间更少。有人能列出每种方式的优缺点吗?每种方式都有用吗?
答案 0 :(得分:1)
根据官方documentation,您无法执行第二个查询。我还没有尝试过,但你说它有可能吗?如果是这样,我相信,以这种方式表达关系是不好的做法......
每个ORM
都是面向对象的,这样就强调了对象而不是id的需要。您的第二个查询看起来更像是JOIN
使用ID的关系数据库的本机查询。