Если вы хотите привести пример оператора MERGE, перейдите по ссылке. Это ссылка на документацию Vertica. Не забудьте четко следовать инструкциям. Вы не можете написать слияние с WHEN NOT MATCHED
и WHEN MATCHED
. Он должен следовать последовательности, указанной в описании использования в документации (это наоборот). Но вы можете полностью отказаться от него.
Я не уверен, если вы знаете о том, что в Vertica данные, которые обновляются или удаляются, на самом деле не удаляются из таблицы, а просто помечены как «удаленные». Этот вид данных можно удалить вручную, выполнив: SELECT PURGE_TABLE ('schemaName.tableName');
Возможно, вам потребуются права суперпользователя, чтобы сделать это на этой схеме. Подробнее об этом можно прочитать здесь: Vertica Documentation; Purge Data. Примером этого является сайт Vertica: Update and Insert Simultaneously using MERGE
Я согласен, что Merge поддерживается в версии Vertica 6.0. Но если настройки управления AHM или эпохи Vertica настроены на сохранение большого количества исторических (удаленных) данных, это замедлит ваши обновления. Скорости обновления могут исходить из того, что плохо, а хуже того, ужасно.
Что я обычно делаю, чтобы избавиться от удаленных (старых) данных, запустите очистку таблицы после обновления таблицы. Это помогло поддерживать скорость обновлений. Слияние полезно, когда вам обязательно нужно запускать обновления. Особенно инкрементные ежедневные обновления, которые могут обновлять миллионы строк.
Получение ответа: я не думаю, что Vertica поддерживает подзапрос в слиянии. Вы получите следующее.
ERROR 0: Subquery in MERGE is not supported
Когда я был подобный потребительной случай, я создал представление, используя подзапрос и объединены в таблицу назначения, используя только что созданный вид, как мой исходной таблицы. Это должно позволить вам продолжать использовать операции MERGE в Vertica, и регулярные PURGE должны позволить вам быстро обновлять свои обновления.
На самом деле объединение также помогает избежать дублирования записей во время вставок или обновлений, если вы используете правильную комбинацию полей в предложении ON, что в идеале должно быть соединением первичных ключей.
Привет, вы можете использовать коррелированное соединение для обновления своих строк. Он имеет [намного лучшую производительность, чем «MERGE») (http://vertica.tips/2014/06/23/merge-vs-correlated-join/). – Kermit