作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这样写是不是更好:
IF EXISTS (SELECT ...) OR EXISTS (SELECT ...)
BEGIN
INSERT INTO myTable
VALUES ('myValue1', 'myValue1')
END
或者写成:
INSERT INTO myTable
SELECT 'myValue1', 'myValue1'
WHERE EXISTS (SELECT ...) OR EXISTS (SELECT ...)
?
我的意思是在性能和可读性方面更好。
皮莱吉
最佳答案
你应该使用后者,其实不是效率问题(我怀疑两者之间没有显着差异),但最不可能遇到race condition .如果两个插入同时运行,则在使用第一种方法时,在检查值是否存在和实际执行插入之间,另一个线程插入同一条记录的可能性很小。由于检查和插入都是在后者中使用相同的锁完成的,因此发生这种情况的可能性较小。
因此在我看来,就准确性和线程安全的重要性而言,可读性和性能都排在第二位。
关于sql-server - T-SQL - 存储过程 - "IF EXISTS"与 "WHERE EXISTS",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20677236/
我是一名优秀的程序员,十分优秀!