我正在开发一个在Oracle数据库中处理许多数据的应用程序。
在某些情况下,我必须根据给定的条件列表获得许多对象,我使用SELECT … FROM .. WHERE … IN …,但IN表达式只接受一个大小最大为1,000的列表项目。
在某些情况下,我必须根据给定的条件列表获得许多对象,我使用SELECT … FROM .. WHERE … IN …,但IN表达式只接受一个大小最大为1,000的列表项目。
所以我使用OR表达式,但是正如我所观察到的那样,或许这个查询(使用OR)比IN慢(具有相同的条件列表)。这样对吗?如果是,如何提高查询的速度?
解决方法
IN优于OR – OR是一个臭名昭着的糟糕表演者,并且可能导致需要在复杂查询中使用括号的其他问题。
要比IN或OR更好的选择是加入到包含所需值(或不想要的)的表中。此表用于比较可以派生,临时或已存在于您的模式中。