мы пытаемся улучшить производительность с JPA с помощью mysql, код:
private String getProfileIdsSQL = "select up.user_profile_fk, up.Profile_id from account_config.user_profile as up " +
" where up.user_profile_fk IN (%s)";
.
.
.
String sql = String.format(getProfileIdsSQL, preparePlaceHolders(foreignKeys.length));
Query query = em.createNativeQuery(sql);
for (int i = 0; i < foreignKeys.length; i++) {
query.setParameter("p" + i, foreignKeys[i]);
}
.
.
.
protected static String preparePlaceHolders(int length) {
if (length == 0)
return "";
int capacity = length * 4;
StringBuilder ans = new StringBuilder(capacity);
for (int i = 0; i < length; i++) {
ans.append(":p").append(i).append(",");
}
ans.setLength(ans.length() - 1);
return ans.toString();
}
Выполнить очень медленно, но если я пропущу привязку параметра и запишу значения в строку запроса без setParameter
,результат очень быстрый, но мы не можем сделать это на производстве, как мы можем заставить setParameter
работать быстрее?
Спасибо.