0

将这个WHERE IN 分解为许多选择是否会使整体性能更好

SELECT aField FROM aTable WHERE objectId IN (0,1,2...999) * many

与拥有巨大的 WHERE objectId IN(700k 项)相比。

编辑 - -

我在内存中的 objectIds 列表可以多达 700k 个项目。它们可以是连续的,但不太可能。where 子句中的字段(在这种情况下为 objectId)是否被索引也不是决定性的。

允许我仅通过 WHERE CLAUSE 的第三方应用程序当前正在使用 Oracle DB。它还具有连接到其他类型数据库的选项,但我正在开发的插件的用户群主要针对 Oracle 数据库。

4

2 回答 2

1

它更好读但更难调试,在内部它会很有趣,哪个更快,通常我会说带有 ObjectID 列表的选项,但是传输如此大量的数据也会消耗一些性能,您可以比较两种变体根据我们的 DBMS 使用解释计划。

于 2013-02-01T09:20:58.690 回答
1

多达 70 万件商品?如果是这种情况,我会认真考虑将它们存储在一个单独的表中并使用 aJOIN代替 - 如果 objectId 是索引外键,那将执行得更好。

于 2013-02-01T09:45:04.313 回答