Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 6784901
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T17:03:27+00:00 2026-05-26T17:03:27+00:00

I started using compiled queries to increase the performance of some commonly executed linq

  • 0

I started using compiled queries to increase the performance of some commonly executed linq to entities queries. In one scenario I only boiled the query down to it’s most basic form and pre-compiled that, then I tack on additional where clauses based on user input.

I seem to be losing the performance benefit of compiled queries in this particular case. Can someone explain why?

Here’s an example of what I’m doing…

IEnumerable<Task> tasks = compiledQuery.Invoke(context, userId); 

if(status != null)
{
    tasks = tasks.Where(x=x.Status == status);
}
if(category != null)
{
   tasks = tasks.Where(x=x.Category == category);
}

return tasks;
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-26T17:03:27+00:00Added an answer on May 26, 2026 at 5:03 pm

    I think it’s important to understand how Compiled Queries in EF work.

    When you execute a query Entity Framework will map your expression tree with the help of your mapping file (EDMX or with code first your model definitions) to a SQL query. This can be a complex and performance intensive task.

    Precompiling stores the results of these mapping phase so the next time you hit the query it has the SQL already available and it only has to set the current parameters.

    The problem is that a precompiled query will lose it’s performance benefit as soon as you modifie the query. Let’s say you have the following:

    IQueryable query = GetCompiledQuery(); // => db.Tasks.Where(t => t.Id == myId);
    var notModifiedResult = query.ToList(); // Fast
    int ModifiedResult = query.Count(); // Slow
    

    With the first query you will have all the benefits of precompiling because EF has the SQL already generated for you and can execute this immediatly.
    The second query will lose the precompiling because it has to regenerate it’s SQL.

    If you would now execute a query on notModifiedResult this will be a Linq To Objects one because you have already executed your SQL to the database and fetched all the elements in memory.

    You can however chain Compiled Queries (that is, use a compiled query in another compiled query).

    But your code would require a series of compiled queries:
    – The default
    – One where status != null
    – One where category != null
    – One where both status and category != null

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I started using Sandcastle some time ago to generate a Documentation Website for one
I started using subversion for one of my projects and it would be absolutely
I started using LINQ (Language Integrated Query) when it was still in beta, more
I have just started with using boost libraries. For one of our projects i
I am using Entity Framework with my website. To improve performance, I have started
I've recently started using CMake for one of my multi-platform projects, but I'm having
I've compiled Boost and am using it in a Visual C++ project. At some
I have started using M-x compile to compile programs in say, C. What is
I started using NetBeans for Python development, and so far it looks pretty good.
I started using Core Data for iPhone development. I started out by creating a

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.