什么是更快的计算关系的方法?
What is faster way to count relation?
我正在使用 Waterline,它是 Node.js 的惊人 ORM。我认为有两种方法可以计算关系(关联)。
第一种方法是在添加或删除关系记录时应用记录计数。例如)附加到 post 的评论,post 的评论计数字段将增加。
第二种方法是使用 'count' 查询。我可以在需要的时候统计关系。
我担心的是第二种方式更容易,但似乎比第一种方式慢。它可能要求太多。但是第一种方式需要更多脏代码。
我真的不知道什么是计算关系的最佳方法。
这个问题的答案有点自以为是,但我会说出我的观点。
我会选择 "count query" 解决方案,因为它是获取此信息的最可靠方式。正如您所说,另一个解决方案需要更多脏代码并且更容易被窃听。我总是尝试用单一的方式来检索信息。
如果请求太慢 and/or 过于频繁并减慢了您的应用程序,那么您应该考虑缓存结果。根据您使用的基础架构,您可以将查询结果缓存在变量中或缓存在快速缓存后端中,例如 memcached
或 Redis
。您必须在需要时使缓存失效,缓存的生命周期由您决定。您应该定义应用程序的全局缓存策略,以便可以将其用于应用程序的其他部分。
我正在使用 Waterline,它是 Node.js 的惊人 ORM。我认为有两种方法可以计算关系(关联)。
第一种方法是在添加或删除关系记录时应用记录计数。例如)附加到 post 的评论,post 的评论计数字段将增加。
第二种方法是使用 'count' 查询。我可以在需要的时候统计关系。
我担心的是第二种方式更容易,但似乎比第一种方式慢。它可能要求太多。但是第一种方式需要更多脏代码。
我真的不知道什么是计算关系的最佳方法。
这个问题的答案有点自以为是,但我会说出我的观点。
我会选择 "count query" 解决方案,因为它是获取此信息的最可靠方式。正如您所说,另一个解决方案需要更多脏代码并且更容易被窃听。我总是尝试用单一的方式来检索信息。
如果请求太慢 and/or 过于频繁并减慢了您的应用程序,那么您应该考虑缓存结果。根据您使用的基础架构,您可以将查询结果缓存在变量中或缓存在快速缓存后端中,例如 memcached
或 Redis
。您必须在需要时使缓存失效,缓存的生命周期由您决定。您应该定义应用程序的全局缓存策略,以便可以将其用于应用程序的其他部分。