Я думаю, что использование EXISTS более эффективно! Вы можете сделать так:
if exists(select 1 from table_name where col1 = %s and col2 = %s) then
insert into table_name (col1, col2, col3)
select %s, %s, %s;
end if;
при тестировании, использование EXISTS примерно в 50 раз быстрее, чем использование NOT EXISTS.
другой методиспользование EXCEPT.
INSERT INTO table_name (col1, col2, col3)
SELECT %s, %s, %s
except
select col1, col2, col3 from table_name
при тестировании, использование EXCEPT примерно в 3 раза быстрее, чем использование NOT EXISTS.