我的一位同事声称,即使执行路径被缓存,也无法从ORM生成的参数化SQL与存储过程一样快.这个顽固的开发者有什么帮助吗?
我将从阅读本文开始:
http://decipherinfosys.wordpress.com/2007/03/27/using-stored-procedures-vs-dynamic-sql-generated-by-orm/
这是两者之间的速度测试:
http://www.blackwasp.co.uk/SpeedTestSqlSproc.aspx
第1轮 - 您可以启动探查器跟踪并比较执行时间.
对大多数人来说,说服他们的最好方法就是"向他们展示证明".在这种情况下,我将创建一些基本的测试用例来检索相同的数据集,然后计算使用存储过程与NHibernate所需的时间.一旦你得到结果,交给他们,大多数持怀疑态度的人应该屈服于证据.
我只想给Rob的回答添加一些东西:
首先,确保测试用例中涉及的数据量与生产值类似.换句话说,如果您的查询通常是针对具有数十万或行的表,那么请创建这样的测试环境.
其次,除了使用nHibernate生成的查询和s'proc调用之外,使其他所有内容都相等.希望您可以通过简单地交换提供程序来执行测试.
最后,要意识到通常存在比存储过程与ORM更多的利害关系.考虑到这一点,测试应该考虑所有因素:执行时间,内存消耗,可伸缩性,调试能力等.