Oracle11g 在Oracle中,where条件的位置是否会影响查询速度?
我们有甲骨文11g。我们有一张4亿行的桌子。说P_计划 我们的表每月由一个名为WORKTIME的列进行分区 我的一位同事认为,查询的速度受where条件的位置影响。因此:Oracle11g 在Oracle中,where条件的位置是否会影响查询速度?,oracle11g,where-clause,partitioning,Oracle11g,Where Clause,Partitioning,我们有甲骨文11g。我们有一张4亿行的桌子。说P_计划 我们的表每月由一个名为WORKTIME的列进行分区 我的一位同事认为,查询的速度受where条件的位置影响。因此: Select * from SCHEDULE where WORKTIME = ? and SOMEOTHERCOLUMN = ? 它不同于 Select * from SCHEDULE where SOMEOTHERCOLUMN = ? and WORKTIME = ? 他声称oracle execution plann
Select * from SCHEDULE where WORKTIME = ? and SOMEOTHERCOLUMN = ?
它不同于
Select * from SCHEDULE where SOMEOTHERCOLUMN = ? and WORKTIME = ?
他声称oracle execution planner由where条件的位置决定。因此,如果它首先找到分区条件,它就会决定转到该分区,从而影响性能
我不是数据库专家,但我认为Oracle execution planner应该比这更聪明
你是怎么认识这种知识的?where条件的位置是否影响查询性能?是的,在其他列的值数少于WORKTIME列的情况下,它会影响查询执行。因为它的环境和条件 当它满足SOMEOTHERCOLUMN值时,它将用于WORKTIME column值 意味着存在这样的情况:它不满足SOMEOTHERCOLUMN值,因此它将转义查询计算的其余部分 例如,SomeOther列具有=3个值,WORKTIME列具有10个值。现在考虑我们的情况。 < P>我可以解释我前面的答案解释的答案。 比如说 Employee_主表包含以下字段和记录 员工id------员工姓名------员工工资 查询1-从员工姓名如“A%”和员工工资>10000的员工主数据中选择* 查询2-从Employee_master中选择*,其中员工工资>10000,员工姓名如“A%” 比较两者,查询1的执行速度将快于查询2 原因-查询1将检查列中的第一个和条件,并找到2种可能性,然后检查第二个和条件,并找到7种可能性 查询2将检查列中的第一个和条件,并找到7种可能性,然后检查第二个和条件,并找到2种可能性
使用和选通时,应首先考虑最小可能性条件。这很容易检查。您只需要比较执行计划。一般来说,条件的顺序并不重要。我检查了成本,结果是一样的。但我有一些不确定的经验,即成本不是查询速度的总体标准。同样,我不知道技术背景。请参考我在下面的回答中的解释,我的意思是:执行计划、统计数据、基准等。你的只是一些想象,可能根本与现实无关。
1 ABC 11000
2 AXY 12000
3 CBC 13000
4 CXY 14000
5 XBC 11000
6 XXY 12000
7 YBC 5000
8 YXY 14000