哪个更快“col =?或col =?或col =?”或者“在哪里col(?,?,?)”在C中与informix(.ec / esql)?

时间:2011-09-12 06:57:12

标签: c informix embedded-sql

我们的代码用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”更快吗?

1 个答案:

答案 0 :(得分:3)

就查询优化器而言,这两种语法都解析为相同的东西。它没有任何区别。

列表方法的唯一优势是添加额外的谓词不会改变逻辑,即

x IN (a, b) AND y = z

x = a OR x = b AND y = z

NOT 同样的事情。