Allow WP_Query to preload post data, and meta in wc_get_products() #12289
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
wc_get_products()
runs a WP_Query to fetch the relevant post IDs only, and then (as long as the user hasn't specifically requested just the IDs) loads each post / product individually.This results in a significant increase in the number of database queries executed. This change allows WP_Query to fetch the post & meta information as well, dramatically reducing the number of queries executed.
The 'fetch-IDs-only' optimisation to WP_Query is retained as long as the user has asked for only IDs to be returned from
wc_get_products()
.With the following test script on my dev box:
Before this change, the code above executes 158 database queries. After this PR that is reduced to 100 queries.
If you combine it with the changes in #12288 then that number comes down to 42 queries.