Другой способ, как показано ниже:
UPDATE table SET A = 1, C=3, D=D+1 WHERE B = 2;
INSERT INTO table(A,B,C,D) values (1, 2,3,4) WHERE changes() = 0;
Изменения() будут 0, если обновление не произойдет. ;)
Как вы задали в своем вопросе, вы хотите знать, лучше ли его выбирать, а затем обновлять или вставлять, зависит от выбора ответа.
UPDATE будет иметь почти такую же стоимость, как и SELECT + INSERT. Безусловно, необходимо найти строку (чтение и поиск), а затем изменить данные (написать). Если он не находит строку, которую вы хотите, она не будет писать.
Так что, если вы выбираете первый, а затем UPDATE или INSERT вы будете иметь два состояния:
1- SELECT (чтение) + UPDATE (чтение + запись)
2- SELECT (чтение) + INSERT (написать)
Но с выше запроса вы будете иметь два состояния:
1- UPDATE (чтение + запись)
2- UPDATE (не найдя строку так просто чтения) + INSERT (написать)
Второе состояние похоже на SELECT вместе с INSERT.
Как вы видите, в обоих сценариях все состояния одинаковы, но для первых состояний приведенный выше сценарий будет иметь меньшее чтение.
Спасибо, но, как @Amir, вы предоставляете только решение, а не объяснение, почему этот способ лучше, чем другие. – wasd
Два утверждения меньше одного. –