получается наоборот: https://pastebin.com/kzZny7JY
не на много, но все-таки
вы уверены что это не просто девиация по ИО? сделайте max_threads=1
Выставил max_threads = 1. Тот же результат. Почему-то, когда время скорость чтения с диска равно между запросами, то и время работы запроса тоже почти равно, хотя "интуитивно" has() должен быть быстрее. Ну и почему-то с диска данные читаются быстрее когда используется arraySum() чем когда has(). В https://pastebin.com/ZCVvCW5C несколько результатов запросов.
во время запуска СПУ одинаково нагружен? судя по разницам у вас прыгает ИО а в целом все одинаково примерно. можете проверить через time clickhouse-client -q "query" есть ли разница в СПУ time. по сути has сделает то же что у вас в аррайсум (сравнение), разницы быть особо и не должно.
Машина чистая. Только для теста. И arraySum же весь массив должен будет проверить, а has на первом же равном эллементе должен остановиться. Или нет ?
нет, там все сложнее думаю =) simd все дела...
ну и для аррайСум могут быть инструкции какие то, arraySumIf реально может быть быстрее. проверьте на очень длинных массивах
С значительно удлиненным массива буду пробовать, спасибо. arraySumIf не вижу такой функции. Да и -If вроде к аггрегаторам можно только прикрепить
да, упростил описание. имелось ввиду arraySum(If(xxx))
короче лучше тестировать через time - там покажет CPU time. т.е. может быть у вас latency на диске большой ещё 100500 причин
Обсуждают сегодня