глобальная временная таблица в спящем режиме - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь заменить гигантское предложение IN (сотни значений) на JOIN по соображениям производительности, поэтому я создал глобальную временную таблицу (Oracle), надеясь, что это может быть жизнеспособной альтернативой:

CREATE GLOBAL TEMPORARY TABLE TMP_USER_GUID (
  user_guid varchar(20)
)
ON COMMIT DELETE ROWS

Когда я запускаю свой sql вручную, он работает нормально:

INSERT ALL
INTO ent.tmp_usr_guid VALUES ('00JD49W7IJ93ZU5MBWBQ')
-- as many INTO statements as I would have IN parameters
SELECT * FROM DUAL;
SELECT u.guid, u.first_name, u.last_name, ...
FROM usr u
JOIN ...
JOIN ...
JOIN tmp_usr_guid tug ON u.guid = tug.usr_guid

Когда я пытаюсь запустить его как собственный SQL-оператор, используя Hibernate (5.2.12.FINAL), он выдает:

org.hibernate.QueryException: неожиданный символ: ';'[INSERT ALL INTO Ent.tmp_usr_guid VALUES ('00JD49W7IJ93ZU5MBWBQ') SELECT * FRU DUAL;ВЫБЕРИТЕ u.guid,

Есть какие-нибудь мысли о правильном подходе?

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