[ https://issues.apache.org/jira/browse/CALCITE-5894?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17751021#comment-17751021 ]
LakeShen commented on CALCITE-5894: ----------------------------------- I think this rule maybe a RBO rule(TransformationRule),when this rule is matched,It is not aware of the distribution information of the underlying data. When we generate a distributed plan, we don't need to perform additional sorts if the underlying data satisfies the ordering requirements of the upper layer. I think they're two orthogonal points.So in my point, I think it makes sense to have this rule.The user of calcite decides whether use this rule. > Add SortRemoveRedundantRule to remove redundant sort fields if sort fields > contains unique key > ---------------------------------------------------------------------------------------------- > > Key: CALCITE-5894 > URL: https://issues.apache.org/jira/browse/CALCITE-5894 > Project: Calcite > Issue Type: New Feature > Reporter: JingDas > Assignee: JingDas > Priority: Minor > > In some scene, Sort fields can be reduct, if sort fields contain unique key > For example > {code:java} > SELECT ename, salary FROM Emp > order by empno, ename{code} > where `empno` is a key, `ename` is redundant since `empno` alone is > sufficient to determine the order of any two records. > So the SQL can be optimized as following: > {code:java} > SELECT name, Emp.salary FROM Emp > order by empno{code} > For another example: > {code:java} > SELECT e_agg.c, e_agg.ename > FROM > (SELECT count(*) as c, ename, job FROM Emp GROUP BY ename, job) AS e_agg > ORDER BY e_agg.ename, e_agg.c {code} > Although `e_agg.ename` is not a key but field `ename` is unique and not null, > it can be optimized as following: > {code:java} > SELECT e_agg.c, e_agg.ename > FROM (SELECT count(*) as c, ename, job FROM Emp GROUP BY ename, job) AS e_agg > ORDER BY e_agg.ename{code} > Sorting is an expensive operation, however. Therefore, it is imperative that > sorting > is optimized to avoid unnecessary sort field. > -- This message was sent by Atlassian Jira (v8.20.10#820010)