慢实体空间查询

时间:2018-04-10 19:25:44

标签: c# entity-framework linq

我正在尝试创建一种方法来查找存储在我的实体数据库中的位置。我试图使用DbGeography类进行此操作,在soem情况下,我取得了成功,但操作通常会超时。

我使用的数据集大约有420,000条记录,而且当它们没有失败时,我的查询通常需要大约30秒。这是我目前使用的正常表现吗?

这是我的代码,

        private List<TransportStop> StopsNearby(double latitude, double longitude, double radiusInKm)
    {
        var location = CreatePoint(latitude, longitude);

        var radiusInMeters = radiusInKm * 1000;

        var stops =
            from c in Data.Naptans
            let distance = c.L.Distance(location)
            where distance <= radiusInMeters
            select c;


        return stops.ToList();
    }

1 个答案:

答案 0 :(得分:0)

尝试将您的方法更改为任务:

public Task<List<TransportStop>> StopsNearby(double latitude, double longitude, double radiusInKm)
    {
        var location = CreatePoint(latitude, longitude);

        var radiusInMeters = radiusInKm * 1000;

        var stops =
            from c in Data.Naptans
            let distance = c.L.Distance(location)
            where distance <= radiusInMeters
            select c;


        return stops.ToList();
    }

然后调用这个方法的引用是这样的:

public async Task Test()
    {
        var stopsNearby = await StopsNearby(1, 1, 1);
    }