ORDER BY e usar visões materializadas.
Veremos como essas abordagens podem reduzir o tempo das consultas de segundos para milissegundos.
Otimize as chaves ORDER BY
ORDER BY para garantir que o ClickHouse produza os resultados mais rápidos possíveis.
A escolha da chave ORDER BY certa depende em grande parte das consultas que você vai executar. Suponha que a maioria das nossas consultas filtre pelas colunas project e subproject.
Nesse caso, é uma boa ideia adicioná-las à chave ORDER BY — assim como a coluna time, já que também fazemos consultas com base no tempo.
Vamos criar outra versão da tabela que tenha os mesmos tipos de coluna de wikistat, mas seja ordenada por (project, subproject, time).
ORDER BY é essencial para o desempenho. Observe que não aplicamos nossas otimizações anteriores de tipos de dados e codec, portanto quaisquer diferenças no desempenho das consultas se devem apenas à ordem de ordenação.
| Consulta | (time) | (project, subproject, time) |
|---|---|---|
| 2.381 sec | 1.660 sec | |
| 2.148 sec | 0.058 sec | |
| 2.192 sec | 0.012 sec | |
| 2.968 sec | 0.010 sec |
Visões materializadas
Criar visão materializada
Carga retroativa da tabela de destino
wikistat, portanto precisamos fazer uma carga retroativa.
A maneira mais fácil de fazer isso é usar uma instrução INSERT INTO SELECT para inserir diretamente na tabela de destino da visão materializada usando a consulta SELECT da visão (transformação):
- Criar uma tabela temporária com o engine de tabela Null
- Conectar uma cópia da visão materializada normalmente usada a essa tabela temporária
- Usar uma consulta
INSERT INTO SELECTpara copiar todos os dados do conjunto de dados brutos para essa tabela temporária - Excluir a tabela temporária e a visão materializada temporária.
wikistat_backfill e gravar em wikistat_top
wikistat_backfill a partir da tabela wikistat inicial: