Melhores práticas de consultaQuery best practices

Aqui estão várias boas práticas a seguir para que a sua consulta corra mais rápido.Here are several best practices to follow to make your query run faster.

AçãoAction UtilizaçãoUse Não useDon't use NotasNotes
Filtros de tempoTime filters Utilize primeiro os filtros de tempo.Use time filters first. Kusto está altamente otimizado para usar filtros de tempo.Kusto is highly optimized to use time filters.
Operadores de cadeiasString operators Utilize o has operadorUse the has operator Não use containsDon't use contains Quando se procura fichas completas, has funciona melhor, já que não procura sub-cordas.When looking for full tokens, has works better, since it doesn't look for substrings.
Operadores sensíveis a casosCase-sensitive operators Utilizar o comando ==Use == Não use =~Don't use =~ Utilize operadores sensíveis a casos, sempre que possível.Use case-sensitive operators when possible.
Utilizar o comando inUse in Não use in~Don't use in~
Utilizar o comando contains_csUse contains_cs Não use containsDon't use contains Se puder usar has / has_cs e não contains / contains_cs usar, é ainda melhor.If you can use has/has_cs and not use contains/contains_cs, that's even better.
Pesquisa de textoSearching text Olhe em uma coluna específicaLook in a specific column Não use *Don't use * * faz uma pesquisa completa de texto em todas as colunas.* does a full text search across all columns.
Extrair campos de objetos dinâmicos através de milhões de linhasExtract fields from dynamic objects across millions of rows Materialize a sua coluna no tempo de ingestão se a maioria das suas consultas extrair campos de objetos dinâmicos em milhões de linhas.Materialize your column at ingestion time if most of your queries extract fields from dynamic objects across millions of rows. Assim, só pagará uma vez pela extração de colunas.This way, you'll only pay once for column extraction.
let afirmação com um valor que se usa mais de uma vezlet statement with a value that you use more than once Utilize a função materializar()Use the materialize() function Para obter mais informações sobre como materialize() utilizar, consulte materializar().For more information on how to use materialize(), see materialize().
Aplicar conversões em mais de mil milhões de registosApply conversions on more than 1 billion records Remodele a sua consulta para reduzir a quantidade de dados alimentados na conversão.Reshape your query to reduce the amount of data fed into the conversion. Não converta grandes quantidades de dados se puder ser evitado.Don't convert large amounts of data if it can be avoided.
Novas consultasNew queries Use limit [small number] ou count no final.Use limit [small number] or count at the end. Executar consultas não ligadas sobre conjuntos de dados desconhecidos pode produzir GBs de resultados a serem devolvidos ao cliente, resultando numa resposta lenta e num cluster ocupado.Running unbound queries over unknown data sets may yield GBs of results to be returned to the client, resulting in a slow response and a busy cluster.
Comparações insensíveis a casosCase-insensitive comparisons Utilizar o comando Col =~ "lowercasestring"Use Col =~ "lowercasestring" Não use tolower(Col) == "lowercasestring"Don't use tolower(Col) == "lowercasestring"
Compare os dados já em minúsculas (ou maiúsculas)Compare data already in lowercase (or uppercase) Col == "lowercasestring" (ou Col == "UPPERCASESTRING")Col == "lowercasestring" (or Col == "UPPERCASESTRING") Evite utilizar comparações insensíveis a casos.Avoid using case insensitive comparisons.
Filtragem em colunasFiltering on columns Filtrar numa coluna de mesa.Filter on a table column. Não filtre numa coluna calculada.Don't filter on a calculated column.
Utilizar o comando T | where predicate(<expression>)Use T | where predicate(<expression>) Não use T | extend _value = <expression> | where predicate(_value)Don't use T | extend _value = <expression> | where predicate(_value)
operador summarizesummarize operator Use a sugestão.strategy=baralhar quando group by keys o operador resumido estiver com alta cardinalidade.Use the hint.strategy=shuffle when the group by keys of the summarize operator are with high cardinality. A alta cardinalidade é idealmente superior a 1 milhão.High cardinality is ideally above 1 million.
operador joinjoin operator Selecione a tabela com menos filas para ser a primeira (a mais à esquerda em consulta).Select the table with the fewer rows to be the first one (left-most in query).
Junte-se a todos os clustersJoin across clusters Através de aglomerados, faça a consulta no lado "direito" da junta, onde a maioria dos dados está localizada.Across clusters, run the query on the "right" side of the join, where most of the data is located.
Junte-se quando o lado esquerdo é pequeno e o lado direito é grandeJoin when left side is small and right side is large Use hint.strategy=broadcastUse hint.strategy=broadcast Small refere-se a até 100.000 registos.Small refers to up to 100,000 records.
Junte-se quando ambos os lados são muito grandesJoin when both sides are too large Use hint.strategy=shuffleUse hint.strategy=shuffle Use quando a chave de união tem alta cardinalidade.Use when the join key has high cardinality.
Extrair valores na coluna com cordas que partilham o mesmo formato ou padrãoExtract values on column with strings sharing the same format or pattern Use o operador de parseUse the parse operator Não use várias extract() declarações.Don't use several extract() statements. Por exemplo, valores como "Time = <time>, ResourceId = <resourceId>, Duration = <duration>, ...."For example, values like "Time = <time>, ResourceId = <resourceId>, Duration = <duration>, ...."
extrato() funçãoextract() function Use quando as cordas analisadas não seguem todos o mesmo formato ou padrão.Use when parsed strings don't all follow the same format or pattern. Extrair os valores necessários utilizando um REGEX.Extract the required values by using a REGEX.
materializar() funçãomaterialize() function Empurre todos os possíveis operadores que reduzam o conjunto de dados materializados e mantenha a semântica da consulta.Push all possible operators that will reduce the materialized data set and still keep the semantics of the query. Por exemplo, filtros ou projetos apenas necessários colunas.For example, filters, or project only required columns.