我需要显示给定类别的结果数量,并隐藏任何没有结果的类别。
示例:此 Yahoo!Jobs 页面显示城市、工作类别、经验等类别的结果数量。
我在 C#/Asp.Net 中工作,担心我们的服务器会在没有一些严重的缓存和 sql 优化的情况下阻塞。
您将如何继续创建这样的解决方案?
我需要显示给定类别的结果数量,并隐藏任何没有结果的类别。
示例:此 Yahoo!Jobs 页面显示城市、工作类别、经验等类别的结果数量。
我在 C#/Asp.Net 中工作,担心我们的服务器会在没有一些严重的缓存和 sql 优化的情况下阻塞。
您将如何继续创建这样的解决方案?
关系数据库不适合那种东西。这只是工作的错误工具。相反,看看Lucene、Solr、Sphinx等。
我个人推荐Solr,它很容易上手,并且使用SolrNet ,您可以用几行代码编写一个多面的 ASP.NET 应用程序。
免责声明:我是该库的作者。
我认为您将不得不深入了解有关您的设置的更多细节。你在使用 ORM 吗?数据是否已经在内存中?请求是如何进来的?你特别关心什么?您是否进行了任何分析以确定这确实是一个问题? 我不能强调最后一个。 在尝试找到解决方法之前,请确保您害怕的是一个实际问题。
但是,要尝试回答,如果您执行此类操作
_categoryRepository
.Where(category=>category.Matches(query))
.Select(category.Items.Count())
Count() 只会对 category.Matches(query) 返回 true 的类别执行。
完成这些计数的典型方式是通过缓存。该模型将在插入相关表时触发,然后使用“CurrentCount”更新计算字段。
您可以在应用程序本身中添加更多级别的缓存,这样计数只会每隔几个小时或类似的时间增加一次。
它比每次实际计算所有行要好得多,但这确实意味着您需要提前知道要计算的数据类型,以便您可以预先计算它。