我正在進行perf練習,我想知道是否有任何機會來改善這一點,只是通過查詢此信息的方式,而不是嘗試做任何事情數據庫模式或數據更改。查詢優化挑戰 - 是否有可能調整此linq查詢
以下查詢需要大約200毫秒來執行。我知道我雄心勃勃,但挑戰在於是否有辦法打倒。我準備採用ADO.NET或使用SP或使用sql查詢,但無法做任何數據更改。另外,EmpTable有大約2000萬行。 它選擇1個與paramid相匹配的記錄。
任何人認爲這仍然有可能進一步優化?
Log.Time()
using (MyDataContext db = MyDataContext.GetContext())
{
db.ObjectTrackingEnabled = false;
var _Query = from t in db.EmpTable
where t.id == paramId
select t;
if (!_Query.Any())
return null;
}
Log.Time() -- 200 ms approx
您是否已經對該查詢進行了描述?代碼沒有多少改變,所以你必須考慮在表上添加一個合適的索引。 – 48klocs
將數據加載到散列表中一次,然後在內存中搜索paramId。我不認爲你可以減少很多查詢執行時間。 – LeffeBrune
如果性能是一個問題,我會避免使用linq,因爲它生成的sql有時可能會被混淆。 – jTC