2013-02-13 2 views
0

Следующий запрос спящего режима используется для извлечения списка ProductCatalogue записей, передав CatID и InventoryIDHibernate проблема производительности: выполнение запросов крайне медленно

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

Таблицы ProductCatalogue и ProdPlacedOrder таблицы с 3 лакхом + записей. inventoryId - столбец в таблице prodOrder, а prodPlacedOrder расширяет таблицу prodOrder.

Этот запрос на выполнение занимает много времени, а один запрос на спящий режим сбрасывает множество сложных запросов sql.

Любые предложения по поводу того, что может быть проблемой и как ее изменить, чтобы запрос выполнялся быстрее?

+0

Вы проверили underlyering SQL (например, запустив его независимо от спящего режима?) - какие индексы у вас есть на таблицах? – phatmanace

+0

Как вы определяете, что запрос сбрасывает множество сложных запросов? Могут ли быть следующие строки: _use_ результат, который их отстреливает? –

+0

@JoachimIsaksson Из журналов show_sql. Нет его самого этого конкретного запроса. – Chillax

ответ

0

Сложно сказать без дополнительной информации, но попробуйте сделать ProdPlacedOrder как LAZY, если вам не нужны данные из этой таблицы.

Также как упомянутый phatman, проверьте свои индексы.

+0

Из всего, что я вижу, все, кроме 'prodcat', уже лениво загружено. –

Смежные вопросы