Bring back navigation.Principal key to foreign key optimization

Open
#15,826 3 comments 13 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
48/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Active
Tech stack
csharp
Domain
backend, database

Research direction

The payload names no files or tests. Start by tracing entity-equality translation in the current query pipeline and compare it with the old pipeline's principal foreign-key optimization; verify that the optimization applies only without dependent global filters and that filtered dependents retain correct behavior.

Written by the indexing model from the issue text.

Description

area-perf area-query

In the old query pipeline, when doing entity equality on a dependent whose principal was already traversed, we generated a comparison on the principal's foreign key column(s) instead of on the dependent's key column(s), saving an additional join.

However, if global filters were defined on the dependent, this caused the filters to be ignored. As a result the optimization was removed in 3.0.

Consider bringing this optimization back when no global filters are defined on the dependent.
/cc @smitpatel

Dominant language
C#
Stars
14.8k
Forks
3.4k
Avg merge
2d 5h
Merged PRs (30d)
134

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from dotnet/efcore

All issues in dotnet/efcore

Similar issues

More C# issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.