When should I use a CompiledQuery?

后端 未结 5 1300
慢半拍i
慢半拍i 2020-12-08 08:09

I have a table:

-- Tag

ID  | Name
-----------
1   | c#
2   | linq
3   | entity-framework

I have a class that will have the following metho

5条回答
  •  孤城傲影
    2020-12-08 08:32

    You should use a CompiledQuery when all of the following are true:

    • The query will be executed more than once, varying only by parameter values.
    • The query is complex enough that the cost of expression evaluation and view generation is "significant" (trial and error)
    • You are not using a LINQ feature like IEnumerable.Contains() which won't work with CompiledQuery.
    • You have already simplified the query, which gives a bigger performance benefit, when possible.
    • You do not intend to further compose the query results (e.g., restrict or project), which has the effect of "decompiling" it.

    CompiledQuery does its work the first time a query is executed. It gives no benefit for the first execution. Like any performance tuning, generally avoid it until you're sure you're fixing an actual performance hotspot.

    2012 Update: EF 5 will do this automatically (see "Entity Framework 5: Controlling automatic query compilation") . So add "You're not using EF 5" to the above list.

提交回复
热议问题