我有一個約38萬行的SQL表。加速SQL到Linq ToList
在SQL SMSS我執行此查詢:
SELECT Longitude, Latitude, street FROM [Stops].[dbo].[Members]
WHERE ABS(Latitude - 51.463419) < 0.005 AND ABS(Longitude - 0.099) < 0.005
它返回約20個結果幾乎瞬間。
我有一個WCF webserice揭露我的數據我的Windows Phone應用程序:
public class Service1 : IService1
{
double curLatitude = 51.463;
double curLongitude = 0.099;
public List<Member> GetMembers()
{
DataClassesDataContext db = new DataClassesDataContext();
var members = from member in db.Members
where (Convert.ToDouble(member.Latitude) - curLatitude) < 0.005 && (Convert.ToDouble(member.Longitude) - curLongitude) < 0.005
select member;
return members.ToList();
}
}
我相信這是做相同的查詢,而且還增加了項目列表。
問題是,它需要7+分鐘,然後我得到一些奇怪的異常,所以永遠不會完成。 VS2010中的WCF服務測試人員只是填滿了內存,並在執行此操作時使用了大量的CPU。 我的感覺是ToList在做些奇怪的事情?
只需添加:您可能想要查看「實時」分析工具;例如,我們使用(和寫)「mvc-mini-profiler」來確保我們總是可以直接訪問數據庫的每個***查詢,以及參數值,時間點,行數,重複等然後我們可以輕鬆地檢查是否有任何意外發生。影響幾乎爲零(它必須是;我們對性能非常非常挑剔)。例如,我可以一目瞭然地告訴你多少SQL查詢(以及哪個TSQL)用於構建此頁面,以及每個頁面需要多長時間。 –