У меня есть база данных с таблицей около 16 500 городов и модель данных EF (Database-First) для этой базы данных. Я предварительно загружаю их в память с помощью кода:
Db.Cities.Load()
... тогда, когда пришло время их использовать, я пробовал каждый из следующих запросов:
Dim cities() As String = Db.Cities.Select(Function(c) c.CityName).ToArray
Dim cities() As String = Db.Cities.Local.Select(Function(c) c.CityName).ToArray
Первый запрос выполняется быстро (~ 10 мс), но второй занимает около 2,3 секунды для запуска в первый раз (хотя он быстрее, чем первый запрос, когда он вызывал после этого).
Это не имеет смысла, потому что SQL Server Profiler проверяет, что первый запрос попадает в базу данных на другой машине, а второй - нет!
Я попытался отключить Db.Configuration.AutoDetectChangesEnabled
, и я попытался предварительно создать представления.
Что делать, чтобы сделать .Local
быстрее? (Не все клиенты, запускающие это приложение, будут находиться в быстрой локальной сети.)