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

Div*_*rao 4 indexing secondary-indexes clickhouse

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

创建表 contact_in..... ( ....... 域字符串,主题字符串,类别字符串 ...... ...... ..... ..... ) ENGINE = MergeTree按类别分区 ORDER BY(主题、域)设置 index_grainarity = 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.
Run Code Online (Sandbox Code Playgroud)

有人可以快速帮我解决这个问题吗?

sup*_*ova 8

添加索引

\n

这会将元数据添加到您的表中。旧数据没有索引!新数据将被索引!操作轻便。

\n
ALTER TABLE [db].name ADD INDEX name expression TYPE type GRANULARITY value [FIRST|AFTER name]\n
Run Code Online (Sandbox Code Playgroud)\n

删除索引

\n

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

\n
ALTER TABLE [db].name DROP INDEX name\n
Run Code Online (Sandbox Code Playgroud)\n

实现索引

\n

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

\n
ALTER TABLE [db.]table MATERIALIZE INDEX name IN PARTITION partition_name\n
Run Code Online (Sandbox Code Playgroud)\n

重建所有索引

\n

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

\n
OPTIMIZE TABLE [db].name FINAL;\n
Run Code Online (Sandbox Code Playgroud)\n

测试指标

\n

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

\n

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

\n
    \n
  • 0 \xe2\x80\x94 已禁用
  • \n
  • 1 \xe2\x80\x94 启用(默认)
  • \n
\n

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

\n

例子:

\n
SELECT * FROM my_table WHERE my_column=1 SETTINGS use_skip_indexes=0;\nSELECT * FROM my_table WHERE my_column=1 SETTINGS force_data_skipping_indices=\'my_index_name\';\n\n-- if index is not exiting DB will throw an error:\nSELECT * FROM my_table WHERE my_column=1 SETTINGS force_data_skipping_indices=\'my_non_existing_index_name\';\n-- > DB::Exception: Index `my_non_existing_index_name` is not used and setting \'force_data_skipping_indices\' contains it \n\n
Run Code Online (Sandbox Code Playgroud)\n

Clickhouse 文档

\n\n


And*_*zin 5

我会将其留在这里,以防有人寻找相同的信息。
语法是:

ALTER TABLE  
[db name].[table name]  
ADD INDEX  
[any name for index]([columns to use])  
TYPE [index type: minmax, set, ngrambf_v1, tokenbf_v1 or bloom_filter - more info below]  
GRANULARITY [you can use default value - 8192]
Run Code Online (Sandbox Code Playgroud)

有关索引类型的更多信息请参见此处