我有一个包含大约16,500个城市的表格数据库,以及相应的EF数据模型(基于数据库)。我使用以下代码将其预加载到内存中:
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
更快?(并非所有运行此应用程序的客户端都在快速局域网上。)