當我決定爲我的新項目使用OR/M(此次MySQL的實體框架)時,我希望能節省時間,但我似乎已經失敗了(第二次)。實體框架+ MySQL - 爲什麼表現如此糟糕?
把這個簡單的SQL查詢
SELECT * FROM POST ORDER BY addedOn DESC LIMIT 0, 50
它執行,給我結果不到一秒鐘,因爲它應該(表中有大約60,000行)。
這裏是相當於LINQ到實體查詢,我寫這個
var q = (from p in db.post
orderby p.addedOn descending
select p).Take(50);
var q1 = q.ToList(); //This is where the query is fetched and timed out
但此查詢甚至從來沒有超時總是執行它(不排序依據需要5秒的運行)!我的超時時間設置爲12秒,因此您可以想象它所花的時間遠不止於此。
- 這是怎麼發生的?
- 有沒有一種方法,我可以看到什麼是實體框架發送到數據庫的實際SQL查詢?
- 我應該放棄EF + MySQL並轉移到標準SQL之前,我失去了所有的永恆努力使其工作?
我重新調整我的索引,試圖預先加載(這實際上使得它失敗甚至沒有排序依據條款)
請幫幫忙,我快要放棄或者/ M爲MySQL爲丟失原因。
那麼,我已經放棄並丟棄了EF + MySQL – 2009-08-15 15:38:22