Улучшение производительности JPA за счет уменьшения количества столбцов в запросе - PullRequest
1 голос
/ 17 февраля 2012

У меня есть большая таблица, в которой много столбцов. В разных случаях использования мне нужно загружать разные столбцы из этой таблицы, но обычно мне не нужны все столбцы. Так что теперь я думаю, что должен выбрать необходимые столбцы из этой большой таблицы.

Например, у меня есть простой POJO, такой как UseCase1, и я использую этот именованный запрос:

SELECT NEW UseCase1(t.a, t.b, t.c) FROM MyBigTable t

В операторах обновления я также обновляю только поля a, b, c.

Итак, вопрос в том, что это хорошее решение для повышения производительности, если я не могу изменить таблицу? И улучшит ли это производительность? :)

Ответы [ 2 ]

1 голос
/ 17 февраля 2012

У нас были похожие ситуации, и вы можете увидеть улучшение производительности, используя этот метод в 2 случаях.

  1. Если в вашей таблице более 40-50 столбцов, и вы хотите, чтобы только 5-10 значений былибыть выбранным.
  2. Если ваш Бин определяет отображение Lazy-коллекции.Тогда избегание этого свойства в конструкторе будет огромной экономией. (Это сработало для нас чрезвычайно)

Как сказал @JB, когда мы говорим о производительности, ничто не может быть завершено без его измерения. Эти 2 пунктабыли мои общие переживания.

0 голосов
/ 16 ноября 2012

Вы также можете лениво загрузить отдельные нереляционные поля (например, строки), используя @Basic (fetch = LAZY), например,

@Basic(fetch = LAZY)
private String description;

Столбец таблицы для этого поля не будет загружен.Будьте осторожны, когда вы ДОЛЖНЫ получить доступ к полю, оно будет лениво загружено одним запросом, который может стать другой проблемой производительности (выбор N + 1).

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