Select /*+PARALLEL(A 32) PARALLEL(B 32) PARALLEL(C 32)*/
Count(Distinct A.PSNSN) As COUNT
From A,
B,
C
Where A.PSNSN = B.PSNSN
And A.PSNSN = C.PSNSN
And C.MONTH = 201001
And A.MONTH = C.MONTH
And B.MONTH = C.MONTH
And A.MONTH = 201001
And B.MONTH = 201001
And B.MONTH = A.MONTH
Group By A.1, B.1, B.2, B.3, B.4, B.5, C.1, A.2, A.3, B.6, B.7, B.8, B.9, B.10;
1、如果把Group By A.1, B.1, B.2, B.3, B.4, B.5, C.1, A.2, A.3, B.6, B.7, B.8, B.9, B.10分组的部分条件更改了,如Group By A.4, B.11, C.2....;得到统计数COUNT是否是一样的,谢谢?
2、WHERE条件有什么可优化的,如
精简:
And A.MONTH = C.MONTH
And B.MONTH = C.MONTH
And B.MONTH = A.MONTH
是否要精简成如下类似的条件
AND A.PSNSN = B.PSNSN
And A.PSNSN = C.PSNSN
顺序:
是否要把日期的条件放在最后
And A.MONTH = 201001
And B.MONTH = 201001
Count(Distinct A.PSNSN) As COUNT
From A,
B,
C
Where A.PSNSN = B.PSNSN
And A.PSNSN = C.PSNSN
And C.MONTH = 201001
And A.MONTH = C.MONTH
And B.MONTH = C.MONTH
And A.MONTH = 201001
And B.MONTH = 201001
And B.MONTH = A.MONTH
Group By A.1, B.1, B.2, B.3, B.4, B.5, C.1, A.2, A.3, B.6, B.7, B.8, B.9, B.10;
1、如果把Group By A.1, B.1, B.2, B.3, B.4, B.5, C.1, A.2, A.3, B.6, B.7, B.8, B.9, B.10分组的部分条件更改了,如Group By A.4, B.11, C.2....;得到统计数COUNT是否是一样的,谢谢?
2、WHERE条件有什么可优化的,如
精简:
And A.MONTH = C.MONTH
And B.MONTH = C.MONTH
And B.MONTH = A.MONTH
是否要精简成如下类似的条件
AND A.PSNSN = B.PSNSN
And A.PSNSN = C.PSNSN
顺序:
是否要把日期的条件放在最后
And A.MONTH = 201001
And B.MONTH = 201001
1 具体情况具体分析;
2 精简:不知道你什么逻辑意义,不好回答
顺序:10g以上是基于成本优化(CBO),所以不用理会这个问题