我修改了书呆子晚餐示例以查找指定位置附近的位置。从平面表中选择时性能很好,但我想拆分表,所以我有一个通用坐标表(SDB_Geography),并且还加入了一个包含特定数据的表,我称之为实体类型(HB_Entity)。
我制作了一个名为 HbEntityModel 的新模型,它存储实体、hb 和地理“子模型”。现在的问题是这个查询需要大约 5 秒来执行。我认为这样做会稍微降低性能,但 5 秒实在是太荒谬了。关于如何通过当前表设置提高性能的任何想法,或者我是否必须回到一个巨大的平板表?
public IEnumerable<HbEntityModel> FindByLocation(float latitude, float longitude)
{
return (from entity in db.SDB_Entity.AsEnumerable()
join nearest in NearestEntities(latitude, longitude, 2)
on entity.EntityId equals nearest.EntityId
join hb in db.HB_Entity
on entity.EntityId equals hb.EntityId
join geo in db.SDB_Geography
on entity.GeographyId equals geo.GeographyId
select new HbEntityModel(entity, hb, geo)).AsEnumerable();
}
更新
所有表都包含大约 14000 条记录。
SDB_Entity 1:0/1 SDB_Geography
SDB_Entity 1:0/1 HB_Entity
搜索产生大约 70 个 HbEntityModel。
如果从单个表中选择相同的查询需要 0.3 秒,使用 IQueryable 而不是 IEnumerable。