[ https://issues.apache.org/jira/browse/DERBY-2998?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12546185 ]
Thomas Nielsen commented on DERBY-2998: --------------------------------------- I started comparing select * from (select row_number() as r, t.* from t) as tr where r < 4; to select * from (select a*b as r, t.* from t) as tr where r < 4; i.e change row_number() for a*b as the expression in the inner select. In both these cases the top of the QueryTree looks like SELECT | PRN | SELECT | PRN ... where the SelectNode fromList point to the below ProjectRestrictNode (PRN), and the PRNs childResult point to the second SelectNode and so on. Even in the a*b scenario, the wherePredicate in the top SelectNode is not pushed below the first PRN, since it is referencing an expression. This means as of now the inner 'select a*b as r ...' results in a full table scan, returning all rows to the outer select, and the restriction is checked at the outer select which in the end return only a few rows. It would seem like a reasonable/good/necessary optimization to push the where predicate down into the second select? I can't remember seeing any jiras relating to this off the top of my head. In the general case one could possibly argue that it does not really matter where it is restricted as long as it's done in the engine, but in the row_number() case and possibly with indexes and sorted inner results, you will take a (potentially severe) performance hit? > Add support for ROW_NUMBER() window function > -------------------------------------------- > > Key: DERBY-2998 > URL: https://issues.apache.org/jira/browse/DERBY-2998 > Project: Derby > Issue Type: Sub-task > Components: SQL > Reporter: Thomas Nielsen > Assignee: Thomas Nielsen > Priority: Minor > Attachments: d2998-4.diff, d2998-4.stat, d2998-5.diff, d2998-5.stat > > > As part of implementing the overall OLAP Operations features of SQL > (DERBY-581), implement the ROW_NUMBER() window function. > More information about this feature is available at > http://wiki.apache.org/db-derby/OLAPRowNumber -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.