Skip to content

Conversation

@leminh98
Copy link
Contributor

@leminh98 leminh98 commented May 6, 2025

Pull Request Template

Description

This PR makes the Query Advice capability functionality available generally. Query Advice provides customers with per-query query text suggestions to make query more efficient and cheaper. To opt-in to receive query advice:

var queryRequestOptions = new QueryRequestOptions
{
    PopulateQueryAdvice = true
};

The query advice will then be serialized and available on FeedResponse.
FeedResponse.QueryAdvice is the recommendation we suggested to change the Query Text. They contain links to documentations that provide further examples and how to make changes to the query text.

while (itemQuery.HasMoreResults)
            {
                // query advice is the same across pages so we only need to log it once
                if (queryAdvice != null)
                {
                    break;
                }

                FeedResponse<CosmosElement> page = itemQuery.ReadNextAsync().Result;
                queryAdvice = page.QueryAdvice;
            }

Currently, QueryAdvice contains all advice separated by new lines. This is what the response will looks like

QA1009: Instead of using GetCurrentTimestamp, consider using GetCurrentTimestampStatic, which may improve performance. For more information, please visit https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/query/queryadvisor/QA1009
QA1008: Instead of using GetCurrentTicks, consider using GetCurrentTicksStatic, which may improve performance. For more information, please visit https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/query/queryadvisor/QA1008

When not specified, PopulateQueryAdvice defaults to false. We only recommend enabling PopulateQueryAdvice for troubleshooting query performance. As long as your queries stay the same, the query advice is unlikely to change.

Type of change

Please delete options that are not relevant.

  • [] Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • [] Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • [] This change requires a documentation update

Closing issues

To automatically close an issue: closes #IssueNumber

@leminh98 leminh98 requested a review from a team as a code owner May 6, 2025 23:12
sboshra
sboshra previously approved these changes May 9, 2025
Copy link
Contributor

@sboshra sboshra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@leminh98 leminh98 added the auto-merge Enables automation to merge PRs label May 9, 2025
@microsoft-github-policy-service microsoft-github-policy-service bot enabled auto-merge (squash) May 9, 2025 23:53
sboshra
sboshra previously approved these changes May 30, 2025
Copy link
Contributor

@sboshra sboshra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Maya-Painter
Maya-Painter previously approved these changes May 30, 2025
adityasa
adityasa previously approved these changes May 30, 2025
Copy link
Contributor

@adityasa adityasa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

auto-merge Enables automation to merge PRs

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants