我们的代码是用 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 (?, ? ...)
这会比“哪里或”更快吗?