[5.8] Improve eager loading performance for MorphTo relation #29129
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.
Refering to PR #26434
I had the same issue, where the
whereIn
done in the query with mymorphTo
eager loading very slow.I updated the
getResultsByType()
method inIlluminate\Database\Eloquent\Relations\MorphTo.php
to use the same logic than the one inaddEagerConstraints()
method fromIlluminate\Database\Eloquent\Relations\HasOneOrMany.php
. By doing so, depending on the PK type the method useswhereIntegerInRaw
orwhereIn
.It decreased my query execution time from 1.8s for 34000 records to 12ms.
Also I found that on our project that is a 5.7 version, would it be possible to apply this PR to 5.7 as well ?