已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以使用事实与引用来回答.
上个月关门了。
此帖子已于上个月编辑并提交审阅,但未能重新打开:
原始关闭原因未解决
Improve this question
简而言之,我的问题是显示每个筛选器可用的项目数。
我有以下实体:
当然,我还有其他实体,比如标签,为了简化,我已经删除了这些实体。
第一个
我的目标是创建一个类似于您在Udemy上看到的搜索页面:
在链接页面上可以看到,当用户选择了一个类别或子类别时,其他子类别中的项目数也会显示出来,或者在根据Free
筛选项目时,也可以看到Paid
的项目数。
我认为唯一的方法是使用多个查询。以这种方式,所有的筛选器都应用一次,以获得搜索结果。然后,要获得与每个筛选器相关的项目数,通过应用除该筛选器之外的所有筛选器并使用按该筛选器分组(并计数)来运行查询!
有没有更好的办法?
考虑到所需查询的数量,从数据库中读取一个类别中所有项目的整个数据并在内存中执行其他查询不是更好吗?
我应该提到的是,我的项目(当然还有Udemy)中的项目数量很大!例如,一个类别中可能有10,000个甚至更多的项目。
我正在使用ASP.NET & C# & NHibernate作为ORM。我想使用LINQ(IQueryable)进行查询。
如果有人能编写一个示例查询,这将非常有帮助。
更新:我不认为这个问题是基于观点的!
我有一个关于这两种方法在科学和实践上的区别的问题。
我已经准确地描述了这个项目和我所做的工作。
现在,我的问题是接收所有数据和在内存中查询,或者多个查询和接收较少数据在效率上的差异。
我不认为这个问题在我们谈论一个具体的技术和实体的时候是受制于人的看法的,从科学的Angular 来说,这个问题对于有足够知识和经验的人来说是可以回答的。
1条答案
按热度按时间z31licg01#
通常,在设计层面,像Udemy这样的网站或拥有大量数据的网站,会使用redis db或elk以不同的时间间隔来同步数据,因为redis或elk上的读取操作比SQL或任何RDBMS上的读取操作快得多。
但是如果你想要一个更简单的解决方案,安排一个每小时运行一次的作业,根据不同的过滤器计算所有的数据,并存储在数据库中。在这种情况下,你正在速度和准确性之间进行权衡。正如你提到的,你拥有的数据超过10k,没有用户会仔细检查每一页,看看它是否与显示的数字匹配。