在T-SQL中,哪个更快?
DELETE * FROM ... WHERE A IN (x,y,z)或
DELETE * FROM ... WHERE A = x OR A = y OR A = z在我的示例中,x、y和z是存储过程的输入参数。我也在尽力让我的DELETE和INSERT语句发挥出我的能力。
发布于 2009-07-13 14:36:56
"IN“将被转换为一系列的"OR"s...if你看一下带有"IN”的查询的执行计划,你会看到它已经展开了。
在我看来,使用" in“要干净得多,特别是在更大的查询中,它使它更具可读性。
发布于 2009-07-13 14:37:05
不思考;配置文件。
我强烈建议您在考虑速度问题时,不要依赖于您或其他任何人的直觉。相反,尝试这两个选项,并进行某种性能分析/运行时度量,找出在您的环境中哪一个更快。
发布于 2009-07-13 14:37:29
在测试服务器上编写两个存储过程,一个使用IN,另一个使用OR。运行每个过程10,000次(或1,000,000次,等等),并比较计时。
一般来说,对于哪种方法更快的问题,这几乎是“唯一”的回答:编写简单的计时测试用例,并多次运行它们。
https://stackoverflow.com/questions/1119801
复制相似问题