4
假設如下表MyObjects
:實體框架4:如何執行WHERE子句秩序生成的查詢
Id (PK, int)
DecimalField (decimal)
TextField (nvarchar)
我已經把一個額外的指數DecimalField
。
考慮以下LINQ實體查詢檢索對象:
db.MyObjects.FirstOrDefault(r => r.DecimalField == localValue1 && r.TextField == localValue2)
因爲索引的,重要的是,EF-生成的查詢保持WHERE子句相同的屬性的順序(即DecimalField
第一個和TextField
秒),否則將發生表掃描並且索引是無用的。我如何強制EF在WHERE子句中保持特定順序?特設查詢和編譯查詢有什麼不同?
很好的問題。 +1 – RPM1984 2011-01-19 10:24:24
KristoferA的回答是正確的。爲了證明這一點,請在Management Studio中寫入兩個SQL查詢,打開「實際執行計劃」並運行查詢。如果兩個查詢沒有得到完全相同的計劃,那麼某處某處會出現問題。 – 2011-01-19 11:35:11