我有一个尚未实施的想法,因为我担心我可能会找错树……主要是因为谷歌搜索该主题返回的结果太少。
基本上我有一些很慢的 SQL 查询,很大程度上是因为它们的子查询很耗时。例如,他们可能会做一些事情,比如“给我数一下所有 10-15 岁男孩骑过的红色自行车”。这很昂贵,因为它会在所有自行车中晃动,但最终结果是一个数字。而且,就我而言,我真的不需要这个数字是 100% 最新的。
此类问题的最终解决方案似乎是应用基于 OLAP 的引擎来预缓存这些排列。但是,在我的情况下,我并没有真正尝试围绕大量指标对数据进行切片和切块,而且我不想让我的架构复杂化,因为另一个进程/数据存储正在运行。
所以......我的想法基本上是在数据库中记住这些子查询。我可能有一个名为“BicycleStatistics”的表,它可能会将上面那个子查询的输出存储为它的输入和输出的名称值对。
前名称:“c_red_g_male_a_10-15”值:235
并且有一种机制可以在查询运行时将这些值存储到该表中。
有没有人遇到过这种情况并尝试过类似的事情?我认为这样的解决方案比“在数据库中投入大量 RAM 并让数据库处理”更有价值的原因是(A)我的数据库大于我可以方便地投入它的 RAM 量,并且( B)数据库将确保我获得这些统计数据的准确数字,而我的最大胜利是,我可以接受这些数字已经过时一两天。
感谢您的任何想法/反馈。
汤姆