Actually, no. Phoenix achieves as good or likely better performance than if you hand-coded it yourself (not to mention with a heck of a lot less code) by:
compiling your SQL queries to native HBase scans
determining the optimal start and stop for your scan key
orchestrating the parallel execution of your scans
bringing the computation to the data by
pushing the predicates in your where clause to a server-side filter
executing aggregate queries through server-side hooks (called co-processors)
In addition to these items, we’ve got some interesting enhancements in the works to further optimize performance:
secondary indexes to improve performance for queries on non row key columns
stats gathering to improve parallelization and guide choices between optimizations
skip scan filter to optimize IN, LIKE, and OR queries
optional salting of row keys to evenly distribute write load