На первый взгляд простой запрос Hibernate занимает 15-18 секунд. - PullRequest
0 голосов
/ 11 октября 2011

У меня, казалось бы, невинный запрос Hibernate:

public List<ContentAccess> getByMemberId(
Integer memberId
) {
List<ContentAccess> contentAccess = 
getHibernateTemplate().findByNamedQuery(
"contentAccess.member.id", 
memberId
);
return contentAccess;
}

Таблица contentAccess содержит около 20 записей, а таблица элементов также содержит около 20 записей, но когда упомянутый выше названный запрос выполняется для каждого из 20 участников,это занимает 15-18 секунд!

Среда: Windows, JDK 1.5.0_09, Hibernate 3, MySQL 5.5

Есть предложения о том, как я могу найти узкое место?Спасибо!

Дилип

1 Ответ

2 голосов
/ 11 октября 2011

во-первых, нам нужно знать, что contentAccess.member.id содержит в качестве запроса.

во-вторых, проверьте, используете ли вы пакетную загрузку (если нет, существует вероятность того, что было запущено 21 запрос) ..один запрос для каждой связанной записи в таблице элементов плюс исходный запрос.

Вы также можете попытаться изменить запрос для использования joins, это может повысить производительность ..

, сказав всечто ... мы можем дать вам (возможно) лучшее решение, если сможем получить запрос, который запускается, и сопоставление ссылочных pojos ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...