Compartilhar via


Assistente de Consulta do Azure Cosmos DB para NoSQL

Importante

Atualmente, o Assistente de Consulta só tem suporte no SDK do .NET.

Observação

O conselho de consulta só é retornado na primeira viagem de ida e volta e não está disponível em chamadas de continuação subsequentes.

Exemplo de utilização

string query = "SELECT VALUE r.id FROM root r WHERE CONTAINS(r.name, 'Abc')";

QueryRequestOptions requestOptions = new QueryRequestOptions() { PopulateQueryAdvice = true };

using FeedIterator<CosmosElement> itemQuery = testContainer.GetItemQueryIterator<CosmosElement>(
    query,
    requestOptions: requestOptions);

string queryAdvice = null;
while (itemQuery.HasMoreResults)
{
    if (queryAdvice != null)
    {
        break;
    }

    FeedResponse<Item> page = await itemQuery.ReadNextAsync();
    queryAdvice = page.QueryAdvice;
}

Console.WriteLine(queryAdvice);

Saída de exemplo

Nesta consulta de exemplo, observamos que há um único conselho, chamado QA1002:

QA1002: Instead of CONTAINS, consider using STARTSWITH or computed properties, which may improve performance. [...]

O conselho de consulta contém três informações importantes:

  • A ID do Conselho de Consulta: QA1002
  • A descrição do conselho: "Em vez de..."
  • O link para a documentação: uma URL para diretrizes detalhadas

Recomendamos que você visite o link fornecido para saber mais sobre os conselhos de consulta em que você pode ver mais exemplos, explicações detalhadas e sugestões para melhorar sua consulta.

Exemplos adicionais

Otimizando funções do sistema

Consulta:

SELECT GetCurrentTicks() 
FROM root r 
WHERE GetCurrentTimestamp() > 10

Conselhos de consulta:

QA1009: Instead of using GetCurrentTimestamp, consider using GetCurrentTimestampStatic, which may improve performance. [...]

QA1008: Instead of using GetCurrentTicks, consider using GetCurrentTicksStatic, which may improve performance. [...]

Neste exemplo, há dois conselhos retornados pelo Assistente de Consulta, QA1008 e QA1009. Cada conselho é separado em uma nova linha na QueryAdvice cadeia de caracteres.