gpt4 book ai didi

c - 使用 informix (.ec/esql) 在 C 中哪个更快 "where col = ? or col = ? or col = ?"或 "where col in (?, ?, ?)"?

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:12 26 4
gpt4 key购买 nike

我们的代码是用C写的,DB是Informix。我们正在对 ESQL 程序进行一些代码优化,发现以下查询:

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

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

如果 ( where_parameter_count >= UPPER_MARK )
__ 执行更新__
__ 清理并继续;/* 再次开始准备 */__

我们考虑将 WHERE .. OR 替换为 WHERE ... IN

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

这会比“where or”更快吗?

最佳答案

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

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

x IN (a, b) AND y = z

x = a OR x = b AND y = z

不是同一件事。

关于c - 使用 informix (.ec/esql) 在 C 中哪个更快 "where col = ? or col = ? or col = ?"或 "where col in (?, ?, ?)"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7384294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com