count()
FROM
(
SELECT *
FROM
(
SELECT
arrayJoin(arrayMap(x -> ((toUnixTimestamp(now()) - (toUnixTimestamp(now()) % 30)) - (x * 30)), range(360))) AS ts,
src
FROM ips
WHERE (ts < (timestamp + timeout)) AND (dst = IPv4StringToNum('192.168.0.5'))
)
GROUP BY
ts,
src
)
GROUP BY ts
ORDER BY ts ASC
При размере таблицы в 3 млн записей возвращает за 0.5-1 сек. При таком запросе можно получить более быстро результат или я многого хочу?
А такой запрос: SELECT arrayJoin(arrayMap(x -> ((toUnixTimestamp(now()) - (toUnixTimestamp(now()) % 30)) - (x * 30)), range(360))) AS ts, count() FROM ips WHERE (ts < (timestamp + timeout)) AND (dst = IPv4StringToNum('192.168.0.5')) GROUP BY ts ORDER BY ts ASC
Обсуждают сегодня