oracle - 我们给出 where 条件的顺序会影响性能吗?

标签 oracle oracle11g

最近开始学习oracle。我听说如果我们不遵循 where 的顺序,将会出现一些性能问题(如果我错了,请纠正我) SQL 查询中的条件{特别是当我们连接两个或多个表时}。如果是这样的话,应该遵循什么样的顺序以及我应该考虑哪些因素。请解释一下一般以及下面的场景,假设我有 3 张 table 。 请查找 DDL 和 Sample data here

Part_material具有以ID为主键(PK)的基本信息, 表Component将有不同类型的组件,其 ID,part_name 作为 PK,每个 ID 将有 30 到 40 个条目, 表connection会有连接信息。我将如下连接这三个表:

select com.id,part.part_material,com.part_name,'TRUE',part.map_id,part.quantity,'INBOUND'
                            from    Components com,Base_part part,connects rel
                            where   part.id=com.id 
                            and     dbms_lob.compare(com.part_value,'Coat wi........')=0
                            and     part.part_material in ('Barium','Tungston','Carbon')  
                            and     com.part_name='Build Material'
                            and     rel.fromid=part.id
                            and     rel.fromid=com.id
                            and     rel.relname in ('Export Need','Not Molten');

如果我改变上面的顺序,性能会提高/降低吗?

最佳答案

Oracle 基于成本的优化器通常不受 WHERE 子句顺序的影响。

Tom Kyte 在 2009 年也回答过:

https://asktom.oracle.com/pls/asktom/f?p=100:11:0%3A%3A%3A%3AP11_QUESTION_ID:1857060700346051220

关于oracle - 我们给出 where 条件的顺序会影响性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31431721/

相关文章:

sql - 如何解决单行子查询返回多行的问题

oracle11g - 如何像SQL2005数据库一样备份和还原ORACLE数据库11g

oracle - ORDER BY 子查询和 ROWNUM 违背关系哲学?

xml - Temenos T24 如何存储数据

oracle - 从另一个用户访问 Oracle 模式对象而不使用用户前缀

java - 来自 Java 小程序的安全 Oracle 连接

sql - 根据另一个表更新行

oracle11g - 甲骨文 : Export related data

Oracle请求utl_http包时出现错误 "ORA-28759: failure to open file"

java - 从java调用oracle存储过程时在mybatis映射器中映射多个输出参数