我有一个使用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();
我无法弄清楚如何解决这个问题,并想知道我的方法是否存在根本性的错误。