2013-02-13 106 views
0

以下Hibernate查詢被用來獲取的器產品目錄記錄列表,在CATID和inventoryIdHibernate的性能問題:查詢執行極其緩慢

傳遞
select prodcat from ProductCatalogue prodcat where prodcat.prodSec.prodId=:catId and prodcat.prodPlacedOrder.inventoryId=:inventoryId 

的表器產品目錄和ProdPlacedOrder與3個十萬表+記錄。 inventoryId是prodOrder表中的列,prodPlacedOrder擴展了prodOrder表。

這個執行查詢需要很多時間,單個hibernate查詢會關閉許多複雜的sql查詢。

有關可能存在什麼問題以及如何對其進行修改以使查詢執行速度更快的建議?

+0

你有沒有檢查過低的SQL(即通過獨立運行它的休眠?) - 你有哪些索引在表上? – phatmanace 2013-02-13 20:30:39

+0

你如何確定查詢引發了許多複雜的查詢?可以用以下幾行來表示將它們擊落的結果? – 2013-02-13 20:41:36

+0

@JoachimIsaksson從show_sql日誌。沒有它的這個特定的查詢本身 – Chillax 2013-02-13 20:45:24

回答

0

很難說,沒有更多的信息,但嘗試製作ProdPlacedOrder作爲LAZY獲取,如果你不需要從該表中的任何數據。

也作爲phatmanace,提到 - 檢查您的指數。

+0

從我所看到的,除了'prodcat'之外的所有東西都已經被加載。 – 2013-02-13 20:56:10