Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
哪个更快;其中col=?或者col=?或col=?”;或;式中,col在(?,?)中;在C语言中使用informix(.ec/esql)?_C_Informix_Embedded Sql - Fatal编程技术网

哪个更快;其中col=?或者col=?或col=?”;或;式中,col在(?,?)中;在C语言中使用informix(.ec/esql)?

哪个更快;其中col=?或者col=?或col=?”;或;式中,col在(?,?)中;在C语言中使用informix(.ec/esql)?,c,informix,embedded-sql,C,Informix,Embedded Sql,我们的代码是用C编写的,数据库是Informix。 我们正在ESQL程序中进行一些代码优化,发现以下查询: 更新[表]设置[主键列]=[新键]其中列=?或COL= where子句中的列数是动态准备的。我们有一个上限计数检查来停止准备where子句并进行更新,然后返回并开始准备剩余的。上标记为“30” 如果(其中参数\u计数>=上限标记) __执行更新\ __清理并继续;/*重新开始准备*/\u 我们想换个地方。。或者在哪里。。。在 更新[表]设置[主键列]=[新键]其中列(?,…) 这会比“wh

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

更新[表]设置[主键列]=[新键]其中列=?或COL=

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

如果(其中参数\u计数>=上限标记)
__执行更新\
__清理并继续;/*重新开始准备*/\u

我们想换个地方。。或者在哪里。。。在

更新[表]设置[主键列]=[新键]其中列(?,…)


这会比“where或”更快吗?

就查询优化器而言,这两种语法都可以归结为相同的问题。这没什么区别

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

x IN (a, b) AND y = z


都不一样。

当你尝试这个时,你发现了什么?这两种方法都可能更快,也可能没有什么不同。当对一组样本数据(超过100万条记录,其中包含30条或子句)进行测试时,没有什么不同。这并不让我感到惊讶。如果对数据库服务器进行重大更改(如版本更改),则可能会有所不同。这也可能意味着,如果您以一种方式优化代码,则重大更改可能意味着以另一种方式更快。谢谢您,Peter,“AND”和“OR”是否是索引上的位运算,并且预期会更快?你对此有什么想法吗?根据需要做多少工作,两者都可能更快。如果查询与索引匹配,则可以加快查询速度。e、 如果你A=n,B=m,C=p,并且你在A,B,C上有一个按这个顺序排列的索引,它可能会非常快。但是这个区别(很简单)是通过把OR'd项括在括号里来解决的。当然是的。但是当我们谈论动态生成的代码时,我认为这是一个有用的区别。谢谢你的建议。实际的代码只是“或”单独的,是的,我理解上面的例子。对样本数据的测试也没有提供任何主要的时差。其中一名团队成员表示,“AND”和“OR”是索引上的位操作,预计会更快。你们有什么想法吗?比什么快?我不确定我是否遵循了你同事的建议。很抱歉造成了混乱,问题是“OR操作是否比IN快,因为OR是位操作”?
x = a OR x = b AND y = z