添加索引
这将向您的表添加元数据。旧数据没有被索引!新数据将被索引!该操作是轻量级的。
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)。可能的值:
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';
SELECT * FROM my_table WHERE my_column=1 SETTINGS force_data_skipping_indices='my_non_existing_index_name';
ClickHouse文档