5

在 Solr DIH data-config.xml 中,使用 JOIN 在主实体中查询尽可能多的字段是否更好,例如:

<entity name="Lists" 
        pk="l.list_id" 
        query="SELECT l.list_id AS id, l.user_id, lo.is_votable FROM lists l
                 INNER JOIN list_options lo ON lo.list_id = l.list_id">

或使用单独的子实体,例如:

<entity name="Lists" 
        pk="l.list_id" 
        query="SELECT l.list_id AS id, l.user_id FROM lists l">

  <entity name="ListOptions" 
          query="SELECT lo.is_votable FROM list_options lo 
                   WHERE lo.list_id=${Lists.id}" />

</entity>
4

1 回答 1

7

一些可以帮助您决定的指针:-

  • 子实体对每条记录进行查询,因此如果您有大量集合,性能会变慢。
  • 如果您有一对一的映射,则可以使用联接,以便通过一个查询本身获取所有字段。
  • 如果您有多个根记录,您将使用可能会创建多值字段的子实体。(您不能使用单个连接查询,因为它会为同一个文档返回多行,除非您想要这种行为)
于 2013-03-22T04:29:31.113 回答