[ 
https://issues.apache.org/jira/browse/HIVE-4676?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13678442#comment-13678442
 ] 

Remus Rusanu commented on HIVE-4676:
------------------------------------

The count(*) aggregate is already optimized to just increment the count with 
the batch size. We just need to make sure the iterator doe snot read extra 
columns.
                
> Optimize COUNT(*) aggregate over vectorized ORC execution path
> --------------------------------------------------------------
>
>                 Key: HIVE-4676
>                 URL: https://issues.apache.org/jira/browse/HIVE-4676
>             Project: Hive
>          Issue Type: Sub-task
>          Components: Query Processor
>    Affects Versions: vectorization-branch
>            Reporter: Eric Hanson
>
> The COUNT\(*\) aggregate with the vectorized execution path over ORC should 
> be optimized because it is a very common case.
> Given a table factsqlengineam_vec_orc with about 25 columns and 218 million 
> rows, this query
> select count\(*\) from factsqlengineam_vec_orc;
> runs in 2 minutes 15 seconds, with HDFS Read 2,000,078,555
> and this query
> select count(mrowflag) from factsqlengineam_vec_orc;
> runs in 42 seconds, with HDFS Read 1,207,855
> Because the column mrowflag is non-null, both queries return the same result.
> We should optimize count\(\*\) so that it, say, chooses the most-compressed 
> column from the ORC file (or even a single random column) and counts those 
> values, but logically counts null values too so the meaning is the same as 
> count\(*\). The vectorized iterator should not have to load all columns, just 
> one column minimum, and any columns being filtered in the WHERE clause.
> For scalar count\(*\) aggregates (i.e. without group-by) we can simply tally 
> up the total number of remaining rows in each batch, without even looking at 
> the data. Maybe we're already doing that but we are reading more data than 
> necessary now.
> The query 
> select count\(\*\) from factsqlengineam_vec_orc where mrowflag > 0;
> Takes only 41 seconds and also reads 1,207,855 bytes, so it appears that when 
> there is no WHERE clause, more data is read.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to