2011-12-08 30 views
4

我有一个场景,我想知道最佳实践来减少数据库命中。情景是我在我的应用程序中有一个字典表,我把所有的单词/关键字用于翻译目的,因为我的系统是多语言的。 关键字放在整个页面上,他们可以从10到20在一个页面上,每个单词从数据库获取翻译,如果用户没有查看英文版的网站。我使用C#和LINQ2SQL在Asp.Net MVC 2上的应用程序。如何将linq中的数据库命中减少到sql

回答

8

缓存是减少数据库查询的好方法。有2个级别的高速缓存可以使用:

  • 缓存对象(数据库查询结果示例)
  • 整个控制器操作的缓存HTML输出或谐音
+0

缓存是个好办法减少分贝查询,但我想减少每个单词的点击率。如果我在一个页面上有20个字,我想要在一个命中而不是20个命中 –

8

翻译通常不经常更换,数据量有限。阅读全部翻译字符串时,Web应用程序启动并把它们放在一个全球可访问的词典。无论何时您需要翻译的字符串,请在字典中查找它们。

+0

+1 - 几乎到't'正是我建议基于可用信息 –

2

linq会延迟加载,这意味着查询不会触及数据库,除非您访问查询返回的属性,所以请确保您在真正需要之前避免访问属性。

你也可以尝试将linq查询合并成一个查看你的循环,以确保没有更好的方式来循环查询。

您应该也可以完全删除数据库访问,并使用xml中的翻译文件而不是数据库。

2

在你可以做缓存和延迟加载等事情之前,最好弄清楚什么是错误的。

输入LinqToSql Profiler。是的,这是一个商业产品..但它是值得的。此外,它有一个试用期..

这可以告诉你的废话执行查询..和查询都在做N + 1,等....

enter image description here

+0

Sql服务器分析器或[如果您使用表达] Anjlab sql分析器是一样的,是免费的。只有你需要在调试时做到这一点 – Pleun