BY (toStartOfTenMinutes(toDateTime(intDiv(start_ts_ms, 1000))), ...
То для того, чтоб этот индекс работал в запросах надо всегда писать выражение
WHERE toStartOfTenMinutes(toDateTime(intDiv(start_ts_ms, 1000))) >= '2020-01-01 11:11:11'
?
Нет, КХ может сообразить что раз есть условие фильтрации по start_ts_ms - можно использовать разреженный индекс из ORDER BY. Но всё зависит от конкретной ситуации
по идее не обязательно, но лучше писать (по многих причинам), но возможно забыли toStartOfTenMinutes и она не монотонная. странное вы придумали, не понимаю зачем ORDER BY (toStartOfTenMinutes(toDateTime(intDiv(start_ts_ms, 1000))) я бы сделал ORDER BY intDiv(start_ts_ms, 600*1000)*600 и писал where toUnixTimeStamp('2020-02-01 00:00:00') Но лучше не пользоваться монотонностью и писать функцию слева (над полем), потому что бажно все это работает. а вообще имеет смысл огрублять время в индексе -- имеет, индекс жрет меньше памяти
Обсуждают сегодня