ClickHouse 有一个包含 60 亿条事件日志条目的表。有一个包含用户名的字段,一个包含主题的字段和一个包含对该主题的操作的字段。有没有办法通过用户名和他的独特项目列表快速获得结果?
查看请求
SELECT distinct(item) FROM table WHERE user_id = 'Вася'
和
SELECT item FROM table WHERE user_id = 'Вася' GROUP BY item
分别工作 31 秒和 22 秒。
迭代次数以数十万为单位。
如果您对不保证精确的解决方案感到满意,那么您仍然可以尝试
尽管我怀疑它会工作得更快。
你指的是什么迭代?如果我们正在谈论如何执行大量相同类型的请求,那么最好避免这种情况。一个大要求胜过许多小要求。
要在一个请求中获取所有内容,您也可以尝试
如果用户很多,RAM不够用,那么可以按user_id范围拆分成多个查询,或者在外存中启用聚合。