Мне любопытно, что лучше всего обновлять несколько строк в моей базе данных, если у меня есть список идентификаторов, предоставляемых внешней системой?Лучшая практика обновления нескольких строк на основе списка ключей
Простой UPDATE table SET y=z WHERE id IN (?);
не так, поскольку мы можем получить больше, чем tousand ID, что является пределом Оракула.
Конечно, у нас есть некоторые идеи, такие как разделение на несколько запросов, с использованием временной таблицы и условий EXIST, но Id'like, чтобы увидеть лучшую практику и знать теорию.
EDIT: этот вопрос не является гонке за самый быстрый ответ, но о лучшей практике и ее теоретическом фоне. Идентификаторы предоставляются внешней системой! Никакой другой таблицы для соединения или другого выбора. По временной таблице я имел в виду глобальную временную таблицу (функцию оракула), не создавая anf, отбрасывая новую таблицу для каждого запроса! Пожалуйста, не отвечайте только потому, что хотите быть быстрыми, или если вы не понимаете.
Возможный дубликат [Как разрешить ORA-01795 в Java-коде] (http://stackoverflow.com/q/26745971/266304). Массив позволит вашему обновлению стать 'UPDATE table SET y = z WHERE id IN (SELECT column_value FROM TABLE (?))'. –
Как часто выполняется этот запрос? Некоторые типичные рекомендации могут не применяться, если этот запрос выполняется только несколько раз в день. –
В любом случае, может не быть лучшей практики; существует несколько подходов, и они могут обмениваться простотой, легкостью кодирования/обслуживания, скоростью, нагрузкой ... Я бы использовал метод сбора массива/таблицы, но могут быть преимущества для других, которых у меня не было, или даже слышал о; и я не сравнивал варианты. Для меня это было более чем достаточно, но, возможно, это было неправильно. –