微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

是否有任何表格可以在 clickhouse 中找到所有表格索引?

如何解决是否有任何表格可以在 clickhouse 中找到所有表格索引?

我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一点。现在,我可以通过解析 create_table_query 文件获取所有表索引,是否有直接存储索引信息的表,例如 MysqL information_schema.STATISTICS


 select t.*,splitByString(' TYPE ',trim(index_column)) as index_info,mid(index_info[1],POSITION (index_info[1],' ') + 1,100) index_columns,index_info[2] as index_type
 from (
 select database,name as table_name,engine,create_table_query,total_rows,partition_key,sorting_key,primary_key,sampling_key,extractAll(create_table_query,'INDEX(.*?)GRANULARITY') index_arr
 from `system`.tables t where database  in ('ods','uds','efc','dss','old')
 and engine not in ('View')
 ) t 
 left ARRAY JOIN index_arr as index_column

解决方法

只有 ENGINE *MergeTree 系列的表才有索引, 每个 *MergeTree 表都有主索引(不是唯一的),您可以通过 Zero

知道主索引中包含哪些字段

此外,还可以使用辅助数据跳过索引, https://clickhouse.tech/docs/en/engines/table-engines/mergetree-family/mergetree/#table_engine-mergetree-data_skipping-indexes

但不幸的是,没有 system.* 表可用于显示表中存在的辅助数据跳过索引

如果你想知道哪些二级数据以及如何跳过查询期间使用的索引,你可以使用follow SQL查询

SELECT * FROM system.columns WHERE is_in_primary_key=1

并期待

SET send_logs_level='trace';
SELECT ... your query;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。