我尝试使用clickhouse存储40亿个数据,部署在一台机器上,48核cpu和256 g内存,机械硬盘。
我的数据有十列,我希望通过SQL语句快速搜索任何列,例如:
select * from table where key='mykeyword'; or select * from table where school='Yale';
我使用order by来建立一个排序键,order by (key, school, ...),但是当我搜索时,只有按键排序的第一个字段具有很高的性能。在搜索其他字段时,查询速度非常慢,甚至内存溢出(内存分配已经足够大)。
因此,问每一位专家,clickhouse是否支持对类似于mysql的每一列索引进行高性能搜索?我还试图通过索引为每一列创建一个二级索引,但是性能没有提高。
发布于 2022-01-02 13:46:54
您应该尝试了解稀疏主索引的工作方式,以及CREATE中的ORDER子句如何准确地帮助您的查询性能。
Clickhouse永远不会像mysql那样工作。
尝试在CREATE语句中使用主键和ORDER,并在主键第一阶上使用基数较低的字段--不要尝试使用所有
SELECT * ...
这真的是反模式
此外,也许辅助数据跳过索引可以帮助您(但我不确定) https://clickhouse.com/docs/en/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes
https://stackoverflow.com/questions/70547335
复制相似问题