EF LINQ空间查询在SQL Server中使用Contains()方法超时

时间:2015-04-29 01:18:20

标签: c# sql-server linq spatial

我有一个使用LINQ(lambda语法)的空间查询(SQL Server 2012),大约30秒后超时,我无法解决原因。我已检查索引,并运行Tuning Advisor,但索引全部显示为有序。我只是想获得包含给定2D点的多边形。

    PointXY point = new PointXY(x, y);
    Parcel parcel = db.parcels.Where(p => p.Geom.Contains(point)).FirstOrDefault();

我尝试使用Within()方法重新排列查询,结果相同:

    Parcel parcel = db.parcels.Where(p => point.Within(p.Geom)).FirstOrDefault();

但是,如果我只是要求计算匹配多边形的数量,则会立即返回(正确)结果。

    int count = db.parcels.Where(p => point.Within(p.Geom)).Count();

我无法弄清楚如何解决这个问题,并想知道我的方法是否存在根本性的错误。

0 个答案:

没有答案