我正在尝试使用Solr的数据导入处理程序在多个表中索引数据。 official wiki on the DIH建议使用嵌入式实体链接多个表,如下所示:
<document>
<entity name="item" pk="id" query="SELECT * FROM item">
<entity name="member" pk="memberid" query="SELECT * FROM member WHERE memberid='${item.memberid}'>
</entity>
</entity>
</document>
另一种有效的方法是:
<document>
<entity name="item" pk="id" query="SELECT * FROM item INNER JOIN member ON item.memberid=member.memberid">
</entity>
</document>
这两种方法在功能上有何不同?有性能差异吗?我的猜测是第一种方法是支持非SQL表,但我不确定。
另一种情况是,如果在MySQL中使用连接表,使用具有多个连接的SQL查询方法可能会导致多个文档被索引而不是一个。
答案 0 :(得分:2)
我遇到的一些事情: -
也想听听其他用户的意见。
答案 1 :(得分:1)
如果要优化性能,可以使用第二个选择来创建物化视图。这意味着您可以直接从物化视图导入DIH(不在DIH中创建任何内部连接或子实体,这将意味着更快的导入和源数据库不会“过热”)如果您愿意,您可以创建一个cronjob每天或根据需要快速刷新物化视图。如果您使用的是MySQL,可以查看here以获取有关实体化视图的详细信息。 希望这会有所帮助。