0

我有一个关系数据库模型这是我的 data-config.xml 的基础

<entity name="MyMainEntity" pk="pID" query="select ... from [dbo].[TableA] inner join TableB on ...">
    <entity name="Entity1" pk="Id1" query="SELECT [Text] Tag from [Table2] where ResourceId = '${MyMainEntity.pId}'"></entity>
            <entity name="Entity1" pk="Id2" query="SELECT [Text] Tag from [Table2] where ResourceId2 = '${MyMainEntity.pId}'"></entity>
    <entity name="LibraryItem" pk="ResourceId" 
            query="select SKU
                    FROM [TableB] 
                    INNER JOIN ...
                    ON ...
                    INNER JOIN ...
                    ON ...
                    WHERE ... AND ...'">
    </entity>
</entity>

现在,这需要很多时间。
第一个查询中的 10000 行,然后彼此内部实体稍后被获取(每个大约 10 行)。

如果我使用数据库探查器,我会看到三个内部实体查询一遍又一遍地运行(3 个选择句子而不是 3 个选择句子一遍又一遍)
这确实效率不高。
并且导入可以运行超过 40 小时 ()
现在,
我有什么选择可以更快地运行它。

  1. 显然,可以选择将桌子平放在一张大桌子上——但这会产生很多其他副作用。我真的很想避免这种额外的努力并在我的生产关系表上运行 solr。
    到目前为止,它开箱即用,我在这里搜索是否有配置调整。
  2. 如果我将这些行变平 - schema.xml 是否也需要更改?或者多值的相同字段将继续多值。

谢谢。

4

1 回答 1

1

在不更改数据库架构的情况下,首先要尝试的是缓存。如果内部实体缓存良好,收益将是可观的。

也许 wiki 不是最新的,所以您应该检查 jira 问题,即solr-2382,也可以查看solr-2948

第二条路径可能是尝试多线程 DIH,但它更棘手。在某一时刻,这是可选的,但后来因为它有问题而被删除,我认为现在有一些 jira 问题试图重新实现它,尝试查找它,但我建议先缓存。

于 2013-06-27T07:20:25.033 回答