Sql 将插入的位置打断为多个选择

Sql 将插入的位置打断为多个选择,sql,Sql,将其中的部分分成多个选项是否会使其整体表现更好 SELECT aField FROM aTable WHERE objectId IN (0,1,2...999) * many 与拥有庞大的WHERE objectId(700k项)相比 编辑--- 我在内存中拥有的objectid列表,它可以多达700k项。它们可以是连续的,但不太可能。 它也不能决定where子句(本例中为objectId)中的字段是否被索引 仅允许我传递WHERE子句的第三方应用程序当前正在使用Oracle DB。它还可以选

将其中的部分分成多个选项是否会使其整体表现更好

SELECT aField FROM aTable WHERE objectId IN (0,1,2...999) * many
与拥有庞大的WHERE objectId(700k项)相比

编辑---

我在内存中拥有的objectid列表,它可以多达700k项。它们可以是连续的,但不太可能。 它也不能决定where子句(本例中为objectId)中的字段是否被索引


仅允许我传递WHERE子句的第三方应用程序当前正在使用Oracle DB。它还可以选择连接到其他类型的数据库,但我正在开发的插件的用户群主要针对Oracle数据库。

读起来更好,但调试起来更难,从内部来说,哪一个更快会很有趣,通常我会说带有objectid列表的选项,但是要传输如此巨大的数据量也会降低性能,您可以根据我们的DBMS使用解释计划来比较这两种变体。

多达700k项?如果是这样的话,我会认真考虑把这些存储在一个单独的表中,而使用一个<代码>连接< /COD>,如果Objod是一个索引的外键,那么它会做得更好。

你从哪里得到Objd的?另一个查询?如果这个数字是连续的,
BETWEEN
也可能是您的解决方案。我编辑了这个问题来回答@JoachimIsaksson和BlausockeWhat RDBMS you using?Oracle DB@Quassnoi,但是除了修改WHERE子句之外,我没有权限对sql执行任何操作。抱歉,刚刚编辑了这个问题。第三方应用程序只允许我访问WHERE子句,它构造了整个sql语句,到目前为止我对此没有控制权。哦,如果是这样的话,我会同意@Blauesocke的建议,使用BETWEEN(or=)来精简子句只要存在连续的ID块,我就可以考虑将它们排序为连续的ID块,但似乎我的选项非常有限,只要我只能访问WHERE子句。是的,如果你不能进行连接,听起来选项非常有限。有了这么多的条目,无论您做什么,您都会有一个非常长的SQL语句(并且可能会突破SQL解释器可以解析的内容的限制?)。。。