Pular para o conteúdo principal
Esta página reúne exemplos de data skipping indexes do ClickHouse, mostrando como declarar cada tipo, quando usá-lo e como verificar se ele está sendo aplicado. Todos os recursos funcionam com tabelas da família MergeTree. Sintaxe do índice:
ClickHouse oferece suporte a seis tipos de skip index: Cada seção traz exemplos com dados de amostra e mostra como verificar o uso do índice na execução da consulta.

Índice MinMax

O índiceminmax é mais adequado para predicados de intervalo em dados pouco ordenados ou em colunas correlacionadas com ORDER BY.
Veja um exemplo detalhado com EXPLAIN e poda.

Índice set

Use o índice set quando a cardinalidade local (por bloco) for baixa; ele não ajuda se cada bloco tiver muitos valores distintos.
Um fluxo de criação/materialização e o efeito antes e depois são mostrados no guia de operação básica. text é um índice invertido sobre dados de texto tokenizados. Foi projetado especificamente para cargas de trabalho de busca de texto completo, permitindo a consulta eficiente e determinística de tokens e termos. É recomendado para casos de uso de linguagem natural ou de pesquisa de texto em larga escala. Consulte Busca de texto completo com índices de texto para mais detalhes e exemplos.
Veja aqui um exemplo mais completo de observabilidade na documentação. O índice de texto é totalmente determinístico e altamente ajustável em termos de tokenização e processamento de texto, à custa de um consumo de armazenamento um pouco maior em comparação com índices baseados em filtro de Bloom, “

Filtro de Bloom genérico (scalar)

O índice bloom_filter é adequado para comparações de igualdade e pertença com IN do tipo “agulha no palheiro”. Ele aceita um parâmetro opcional, que é a taxa de falso positivo (padrão: 0.025).
O uso de índices ngrambf_v1 para busca de texto completo foi descontinuado nas versões do ClickHouse >= 26.2, em favor dos índices text (consulte aqui para mais detalhes).
O índice ngrambf_v1 divide strings em n-gramas. Ele funciona bem para consultas LIKE '%...%'. Ele oferece suporte a String/FixedString/Map (via mapKeys/mapValues), além de permitir ajustar o tamanho, o número de hashes e o seed. Consulte a documentação de Filtro de Bloom de n-gramas para mais detalhes.
Este guia mostra exemplos práticos e quando usar token vs ngram. Funções auxiliares para otimização de parâmetros: Os quatro parâmetros do ngrambf_v1 (tamanho do n-gram, tamanho do bitmap, funções de hash, seed) afetam significativamente o desempenho e o uso de memória. Use estas funções para calcular o tamanho ideal do bitmap e a quantidade de funções de hash com base no volume esperado de n-grams e na taxa desejada de falsos positivos:
Consulte a documentação de referência do parâmetro para obter orientações completas de ajuste fino.
O uso de índices tokenbf_v1 para busca de texto completo está obsoleto nas versões do ClickHouse >= 26.2, em favor dos índices text (veja aqui para mais detalhes).
Os índices tokenbf_v1 indexam tokens separados por caracteres não alfanuméricos. Eles devem ser usados com hasToken, padrões de palavra com LIKE ou =/IN. São compatíveis com os tipos String/FixedString/Map. Consulte as páginas Token filtro de Bloom e filtro de Bloom types para mais detalhes.
Consulte exemplos de observabilidade e orientações sobre token versus ngram aqui.

Adicione índices no CREATE TABLE (vários exemplos)

Os índices de salto também são compatíveis com expressões compostas e com os tipos Map/Tuple/Nested. Isso é demonstrado no exemplo abaixo:

Materialização em dados existentes e verificação

Você pode adicionar um índice a partes de dados existentes usando MATERIALIZE e inspecionar a poda com EXPLAIN ou logs de trace, como mostrado abaixo:
Este exemplo funcional de minmax demonstra a estrutura da saída do EXPLAIN e o número de podas.

Quando usar e quando evitar skip indexes

Use skip indexes quando:
  • Os valores do filtro são esparsos nos blocos de dados
  • Há forte correlação com as colunas ORDER BY ou os padrões de ingestão de dados agrupam valores semelhantes
  • Você realiza pesquisas de texto em grandes conjuntos de logs (tipos ngrambf_v1/tokenbf_v1)
Evite skip indexes quando:
  • É provável que a maioria dos blocos contenha pelo menos um valor correspondente (os blocos serão lidos de qualquer maneira)
  • O filtro é aplicado a colunas de alta cardinalidade sem correlação com a ordenação dos dados
Considerações importantesSe um valor aparecer mesmo que uma única vez em um bloco de dados, o ClickHouse precisará ler o bloco inteiro. Teste os índices com conjuntos de dados realistas e ajuste a granularidade e os parâmetros específicos do tipo com base em medições reais de desempenho.

Ignorar temporariamente ou forçar índices

Desative índices específicos pelo nome em consultas individuais durante testes e solução de problemas. Também há configurações para forçar o uso de índices quando necessário. Consulte ignore_data_skipping_indices.

Notas e ressalvas

  • Índices de salto são compatíveis apenas com tabelas da família MergeTree; a poda ocorre no nível de grânulo/bloco.
  • Índices baseados em filtro de Bloom são probabilísticos (falsos positivos causam leituras extras, mas não fazem com que dados válidos sejam ignorados).
  • Filtros de Bloom e outros índices de salto devem ser validados com EXPLAIN e rastreamento; ajuste a granularidade para equilibrar a poda e o tamanho do índice.
Última modificação em 12 de junho de 2026