gpt4 book ai didi

indexing - 在 Clickhouse 中的现有表上创建索引

转载 作者:行者123 更新时间:2023-12-01 21:50:11 27 4
gpt4 key购买 nike

我正在尝试使用以下语法在现有表上添加索引。

创建表contact_in.....(…………域字符串,主题字符串,类别字符串…………..........) ENGINE = MergeTree PARTITION BY 类别订购方式(主题,域)设置 index_granularity = 8192

I want to create an index on the topic column (granularity is 6020)

tried syntax from the documentation but unable to understand since there is no examples explaining the fields in it.

请有人能快速帮我解决这个问题。

最佳答案

添加索引

这会将元数据添加到您的表中。旧数据未编入索引!新数据将被索引!操作轻量级。

ALTER TABLE [db].name ADD INDEX name expression TYPE type GRANULARITY value [FIRST|AFTER name]

删除索引

元数据和索引文件被删除。轻量级操作,因为这对数据库来说很容易。

ALTER TABLE [db].name DROP INDEX name

实现索引

这将重新创建提到的索引。表中的所有数据都将被索引。通常,您将在向表中添加索引以将预先存在的数据包含到索引中后运行它。

ALTER TABLE [db.]table MATERIALIZE INDEX name IN PARTITION partition_name

重建所有索引

您可以通过优化表来强制使用所有表数据重新创建所有索引:

OPTIMIZE TABLE [db].name FINAL;

测试指标

Clickhouse 没有查询提示,只有设置,这很相似,可以添加到任何查询中。有一些控制索引的设置:

use_skip_indexes - 查询执行期间的索引 (>=v21.11)。可能的值:

  • 0 — 已禁用
  • 1 — 启用(默认)

force_data_skipping_indices如果未使用传递的数据跳过索引 (>=v20.6.8.5),则禁用查询执行。

例子:

SELECT * FROM my_table WHERE my_column=1 SETTINGS use_skip_indexes=0;
SELECT * FROM my_table WHERE my_column=1 SETTINGS force_data_skipping_indices='my_index_name';

-- if index is not exiting DB will throw an error:
SELECT * FROM my_table WHERE my_column=1 SETTINGS force_data_skipping_indices='my_non_existing_index_name';
-- > DB::Exception: Index `my_non_existing_index_name` is not used and setting 'force_data_skipping_indices' contains it

Clickhouse 文档

关于indexing - 在 Clickhouse 中的现有表上创建索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59625778/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com