Я изменил пример обеда для ботаников, чтобы найти места в непосредственной близости от указанной позиции. При выборе из плоской таблицы производительность хорошая, но я хотел разделить таблицы, чтобы у меня была общая таблица координат (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();
}
UPDATE
Все таблицы содержат около 14000 записей.
SDB_Entity 1: 0/1 SDB_Geography
SDB_Entity 1: 0/1 HB_Entity
Поиск дает около 70 HbEntityModels.
Если при выборе из одной таблицы тот же запрос занимает 0,3 с, используя IQueryable вместо IEnumerable.