C# 与MS Access相比,Fluent nhibernate在sql express上速度较慢

C# 与MS Access相比,Fluent nhibernate在sql express上速度较慢,c#,fluent-nhibernate,ms-access-2010,sql-server-express,C#,Fluent Nhibernate,Ms Access 2010,Sql Server Express,我有一个运行fluent nHibernate的windows应用程序,数据存储在本地服务器上的MS Access数据库中 现在,我已将数据传输到同一服务器上的SQL Express数据库,并在此服务器上运行相同的代码,但现在响应时间比access数据库的响应时间增加了一倍 我知道我可以检查我的查询并尝试使用lazyload,但问题不在于程序运行缓慢,在Access数据库上响应时间很好,而在SQL Express数据库上则不行 有人问为什么SQL Express的响应时间比Access数据库的响

我有一个运行fluent nHibernate的windows应用程序,数据存储在本地服务器上的MS Access数据库中

现在,我已将数据传输到同一服务器上的SQL Express数据库,并在此服务器上运行相同的代码,但现在响应时间比access数据库的响应时间增加了一倍

我知道我可以检查我的查询并尝试使用lazyload,但问题不在于程序运行缓慢,在Access数据库上响应时间很好,而在SQL Express数据库上则不行

有人问为什么SQL Express的响应时间比Access数据库的响应时间要长一倍吗?

这是“设计”造成的,或者更确切地说是物理布局造成的

对于不太大的表,访问速度非常快

SQL Server带来的好处是增加了灵活性(连接、托管、可扩展性、T-SQL、管理、更好的多用户支持等),包括自包含数据库引擎的所有功能—与JET/ACE Access等基于文件的引擎相比


此外,您现在体验的速度可能会保持稳定。

您有相同的指数吗?您是否在10个用户并发加载的情况下尝试了相同的代码?您是否尝试在网络路径上移动数据库位置?我刚刚将MS Access数据库导入SQL Express数据库,因此我假设索引是相同的。我只在我的机器上测试过,所以有一个用户。是的,我尝试将Acces数据库移动到服务器上的其他位置。还是一样的结果不要假设,检查,一切都一样。也许值得一提的是,当我只提取一个对象上的数据时,没有nHIbernate关系,查询速度比Acces数据库快。一旦我将一对多关系放入查询中,响应时间就是答案的doubledThx。我只是觉得很有趣,在一个表上进行查询的效果远远好于access,但只要我在两个对象之间建立1个关系,速度就非常慢。如果这是设计的,为什么有人使用ORM?您的ORM负责生成最终的SQL。它可以针对Access/JET进行优化,但不能针对SQL Server进行优化。我不是SQL Server方面的专家,但我相信您可以设置日志,以便研究发送到引擎的命令。这可能会告诉你原因。