1

我们的代码是用 C 编写的,DB 是 Informix。我们在 ESQL 程序中做一些代码优化,发现如下查询:

UPDATE [TABLE] SET [PRIMARY KEY COLUMN] = [NEW KEY] WHERE COL = ? 或 COL = ? ...

where 子句中的列数是动态准备的。我们有一个上限检查来停止准备 where 子句并进行更新,然后返回并开始准备剩余的。UPPER_MARK 是“30”

if ( where_parameter_count >= UPPER_MARK )
__ 执行更新
__ __ clean_and_continue; /* 再次开始准备 */__

我们想用 WHERE ... IN 替换 WHERE .. OR

UPDATE [TABLE] SET [PRIMARY KEY COLUMN] = [NEW KEY] COL IN (?, ? ...)

这会比“哪里或”更快吗?

4

1 回答 1

3

就查询优化器而言,这两种语法都可以解决相同的问题。它不会有任何区别。

in-list 方法的唯一优点是添加额外的谓词不会改变逻辑,即

x IN (a, b) AND y = z

x = a OR x = b AND y = z

不是一回事

于 2011-09-12T07:07:41.857 回答