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
Обсуждают сегодня