У меня есть приложение Java EE, где у меня есть список групп. Я хочу отобразить количество элементов в каждой группе, поэтому я делаю:
SELECT COUNT(p) FROM Product p WHERE LOWER(p.group) = LOWER(:group)
Группа простая строка.
Проблема в том, что когда у меня более 50 групп, время загрузки страницы составляет около 10 секунд, что недопустимо. Когда я снимаю счет, время падает до ~ 1с. Как я могу оптимизировать / кэшировать это?
Моей первой идеей было использование синглтона EJB для локального хранения отсчетов и обновления их с помощью таймера EJB.
Я использую базу данных glassfish v3, eclipselink и oracle 10g на одной машине.
Я использую кеш в eclipselink, но, похоже, не для кеширования запросов.
<property name="eclipselink.cache.shared.default" value="false"/>
<property name="eclipselink.cache.size.default" value="500"/>