2013-06-27 42 views
0

我有一個關係數據庫模型 這是我的數據-config.xml中Solr的 - 有沒有一種方法,以加快我進口

<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個選擇句子)
這真的沒有效率。
並且進口可以運行40小時以上()
現在,
我有哪些選擇可以更快地運行它。

  1. 很明顯,有一個選項可以將表格平放在一張大桌子上 - 但這樣會產生很多其他副作用。我真的想避免額外的努力,並在我的生產關係表上運行solr。
    到目前爲止,它開箱即用,我在這裏搜索是否有配置調整。
  2. 如果我將平整的行 - 是否需要更改schema.xml嗎?或多值化的相同字段將保持多值化。

謝謝。

+0

如果它們是單個子實體,那麼如何在表中構建一個視圖而不是發射多個查詢?這要快得多 – Jayendra

+0

生成一個視圖將迫使我生成另一個主鍵(因爲乘法),我想盡量避免它 – Jeb

回答

1

不改變數據庫的模式,首先要嘗試的是caching。如果內部實體高速緩存,收益將會很大。

也許wiki不是最新的,所以你應該檢查jira的問題,即solr-2382,也許看看solr-2948也是如此。

第二條路可能會嘗試多線程DIH,但它更棘手。有一次,這是可選的,但後來被刪除,因爲它是越野車,我認爲現在有一些jira問題試圖重新實現它,請嘗試查找它,但我建議首先緩存。

相關問題