Quantcast
Channel: SQL.ru: OLAP и DWH
Viewing all articles
Browse latest Browse all 1167

ClickHouse: можно ли ускорить этот запрос?

$
0
0
Таблица:

CREATE TABLE c2.t
(
    date Date,
    datetime DateTime,
    name String,
    street String,
    code UInt32,

    count UInt64

) ENGINE = MergeTree(date, (date, name), 8192);

-- пробовал индекс (date, name, street, code)



Данных - 300 млн строк.

Запрос:
select name, street, code, sum(count) from c2.t
WHERE date >= toDate('2016-01-01') AND date <= toDate('2016-09-10')
GROUP BY name, street, code
ORDER BY sum(count) DESC limit 10;


Работает сканированием всех данных.

Можно ли заставить этот запрос работать гораздо быстрее? Как? Если нет решения с индексами, какие решения есть с агрегатами? Примеры?

Лично не вижу теоретической возможности это ускорить без агрегатов, ведь чувак в запросе сказал дать ему топ-10 счётчиков среди всех комбинаций значений данных 3 колонок. Даже при наличии индексов, просмотреть и просуммировать придётся буквально все данные, что оно и делает.

Есть своё решение с агрегатами, но переложить на SQL не могу в силу пока непонятности их хелпа по части агрегатных функций, состояний и т.п.

Viewing all articles
Browse latest Browse all 1167

Trending Articles