[英]What is the difference between a Join Query and Embedded Entities in Solr DIH?
我正在尝试使用Solr的数据导入处理程序在多个表中索引数据。 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查询方法可能会导致多个文档被索引而不是一个。
我遇到的一些事情: -
想听听其他用户的意见。
如果要优化性能,可以使用第二个选择来创建物化视图。 这意味着您可以直接从物化视图导入DIH(不在DIH中创建任何内部连接或子实体,这将意味着更快的导入和源数据库不会“过热”)如果您愿意,您可以创建一个cronjob每天或根据需要快速刷新物化视图。 如果您使用的是MySQL,可以在这里查看具体化视图的详细信息。 希望有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.