在开发的最后阶段,我开始查看代码,试图找到一些不好的做法.我发现在访问页面时,我正在查询数据库n次(n是HTML表的行数)只是为了获得给定记录的翻译(不同的语言)...我立刻认为这很糟糕我尝试了一个小优化.
运行SQL事件探查器显示这些查询占用0毫秒.
由于我查询的这些表很小(20-100条记录),我以为我可以获取所有数据并将它们缓存到Web服务器RAM中,稍后使用LINQ to Objects进行检索.这种方式的执行时间也是0ms.
我正在运行这些测试的环境是同一台机器上负载为0%的DB和Web服务器.这只是我使用的应用程序.
问题从这里开始.既然我没有任何性能差异,我应该避免这种优化吗?我是否应该保持平衡DB和Web服务器的使用(服务器将在生产环境中的两台不同的机器上)?
在我看来,这种优化不会损坏性能,只有在重负载DB的情况下才能做得更好.我的大脑中有一些东西说如果没有必要进行优化是错误的......
感谢您的意见.
我认为你实际上并没有表明根本没有性能差异.
尝试每次运行查询一百万次,并计算总共需要多长时间...我认为你会看到一个很大的不同.
SQL探查器仅向您显示(据我所知)数据库执行查询所花费的时间.它没有考虑到:
设置连接或准备查询所花费的时间
发出查询的网络延迟所花费的时间
返回结果的网络延迟所花费的时间
将结果转换为有用对象所花费的时间.
当然,过早优化通常是一件坏事,但这听起来像是一个合理的改变 - 如果你知道表的内容不会改变.