我们的代码用C语言编写,DB是Informix。 我们在ESQL程序中进行了一些代码优化,并找到了以下查询:
UPDATE [TABLE] SET [PRIMARY KEY COLUMN] = [NEW KEY] COL =?或COL =? ...
动态准备where子句中的列数。我们有一个上限计数检查,以停止准备where子句并进行更新,然后返回并开始准备剩余的。 UPPER_MARK是“30”
if(where_parameter_count> = UPPER_MARK)
__执行update__
__ clean_and_continue; / *再次开始准备* / __
我们想过用WHERE ... IN替换WHERE ..或者
UPDATE [TABLE] SET [PRIMARY KEY COLUMN] = [NEW KEY] COL IN COL IN(?,?...)
这会比“where or”更快吗?
答案 0 :(得分:3)
就查询优化器而言,这两种语法都解析为相同的东西。它没有任何区别。
列表方法的唯一优势是添加额外的谓词不会改变逻辑,即
x IN (a, b) AND y = z
和
x = a OR x = b AND y = z
是 NOT 同样的事情。