использование setParameter с createNativeQuery очень медленно - PullRequest
1 голос
/ 29 июня 2019

мы пытаемся улучшить производительность с 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 работать быстрее?

Спасибо.

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