Что более эффективно, макс. Или порядок по предельному пределу 1 в HIVE с использованием версии 2 спарк - PullRequest
0 голосов
/ 25 июня 2018

Поскольку Hive хранит данные в распределенном виде, какой запрос будет более эффективным из числа ниже двух, если мы не учли этот столбец в разбиении или в сегментах.

  1. select max(stat_id) from stats_tbl ;
  2. select stat_id from stats_tbl order by stat_id desc limit 1;

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Порядок выполнения запроса: from -> where -> group by -> having -> select -> order by -> limit

Таким образом, select max(stat_id) from stats_tbl ; - это простая операция сканирования, которая означает, что она будет повторять строку за строкой только один раз, но запрос select stat_id from stats_tbl order by stat_id desc limit 1; выполнит упорядочение после сканирования, после чего он будет применять limit.

И мы также знаем, что odering - это дорогостоящие операции, тогда как сканирование, поэтому запрос select max(stat_id) from stats_tbl; более эффективен, чем select stat_id from stats_tbl order by stat_id desc limit 1;

.
0 голосов
/ 25 июня 2018

Определенно select max(stat_id) from stats_tbl, потому что order by требует сбора (прочитайте «много случайного») всех данных в один редуктор (и поэтому вы должны предоставить с ним предложение limit), что будет неэффективно по сравнению с агрегатная функция, которая может быть вычислена распределенно .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...