Это зависит. Простое ОБНОВЛЕНИЕ, которое использует первичный ключ в предложении WHERE и обновляет только одно неиндексированное поле, вероятно, будет дешевле, чем INSERT в той же таблице. Но даже это зависит от задействованного движка базы данных. ОБНОВЛЕНИЕ, которое включает изменение многих индексированных полей, однако, может быть более дорогостоящим, чем ВСТАВКА в этой таблице, потому что потребуется больше модификаций ключа индекса. ОБНОВЛЕНИЕ с плохо сконструированным предложением WHERE, требующее сканирования таблицы миллионов записей, безусловно, будет дороже, чем INSERT для этой таблицы.
Эти утверждения могут принимать различные формы, но если вы ограничите обсуждение их «базовыми» формами, которые включают в себя одну запись, то большая часть затрат будет обычно посвящена изменению индексов. Каждое индексированное поле, которое изменяется во время ОБНОВЛЕНИЯ, обычно включает две основные операции (удаление старого ключа и добавление нового ключа), тогда как для INSERT требуется одно (добавление нового ключа). Конечно, кластеризованный индекс затем добавил бы некоторую другую динамику, такую как проблемы с блокировкой, изоляция транзакций и т. Д. Таким образом, в конечном итоге сравнение этих операторов в общем смысле не представляется возможным и, вероятно, потребовало бы сравнительного анализа конкретных операторов, если оно действительно имело значение.
Как правило, однако, имеет смысл просто использовать правильное утверждение и не беспокоиться о нем, поскольку обычно это не вариант выбора между ОБНОВЛЕНИЕМ и ВСТАВКОЙ.