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