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 行)。

db プロファイラーを使用すると、3 つの内部エンティティ クエリが何度も実行されていることがわかります (3 つの選択文が何度も繰り返されるよりも 3 つの選択文が繰り返されます)
。これは実際には効率的ではありません。
そして、インポートは 40 時間以上実行できます ()
さて、
それをより速く実行するための私のオプションは何ですか .

  1. 明らかに、テーブルを 1 つの大きなテーブルにフラット化するオプションがありますが、それには他の多くの副作用が生じます。その余分な労力を避けて、本番リレーショナル テーブルで solr を実行したいと思っています。
    これまでのところ、箱から出してすぐにうまく機能し、構成の調整があるかどうかをここで検索しています.
  2. 行を平坦化する場合、schema.xml も変更する必要がありますか? または、複数値を持つ同じフィールドが複数値のままになります。

ありがとう。

4

1 に答える 1