Database 在数据库内存化中-一个好主意?有什么经验吗?

Database 在数据库内存化中-一个好主意?有什么经验吗?,database,database-design,memoization,rolap,Database,Database Design,Memoization,Rolap,我有一个想法我还没有实现,因为我有点担心我可能是找错了方向。。。主要是因为谷歌搜索这个主题的结果很少 基本上,我有一些SQL查询速度很慢,很大程度上是因为它们的子查询非常耗时。例如,他们可能会做一些事情,比如“让我数一数10-15岁男孩骑的所有红色自行车”。这是昂贵的,因为它通过所有的自行车,但最终的结果是一个单一的数字。而且,在我的情况下,我真的不需要这个数字是100%最新的 这类问题的最终解决方案似乎是应用基于OLAP的引擎来预缓存这些排列。然而,在我的例子中,我并不是真的试图围绕大量的指标

我有一个想法我还没有实现,因为我有点担心我可能是找错了方向。。。主要是因为谷歌搜索这个主题的结果很少

基本上,我有一些SQL查询速度很慢,很大程度上是因为它们的子查询非常耗时。例如,他们可能会做一些事情,比如“让我数一数10-15岁男孩骑的所有红色自行车”。这是昂贵的,因为它通过所有的自行车,但最终的结果是一个单一的数字。而且,在我的情况下,我真的不需要这个数字是100%最新的


这类问题的最终解决方案似乎是应用基于OLAP的引擎来预缓存这些排列。然而,在我的例子中,我并不是真的试图围绕大量的指标对数据进行切分,我也不希望在运行另一个进程/数据存储时使我的体系结构复杂化

所以。。。我的想法基本上是将这些子查询存储在数据库中。我可能有一个名为“BicycleStatistics”的表,它可能将上述子查询的输出存储为输入和输出的名称-值对

Ex name:“c_red_g_male_a_10-15”值:235

并且有一种机制,在查询运行时将这些值存储到该表中

有没有人在这种情况下尝试过类似的事情?我认为这样的解决方案比“在数据库中投入大量RAM,让数据库处理”更有价值的原因是(a)我的数据库比我可以方便地投入的RAM大,(B)数据库将确保我获得这些统计数据的准确数字,以及我的大胜利,如上所述,我同意这些数字已经过时一两天了

感谢您的任何想法/反馈


如果您的DBMS支持Tom,则Tom是实现此要求的一种方法。

您是否查看了查询计划以了解查询速度如此缓慢的原因?这可能是因为您使用的方法效率低下,例如关联子查询而不是联接,或者您缺少某个索引。“这类问题的最终解决方案”是首先检查您的查询工作负载是否有正确的索引确实,我花了大量时间确保查询完全使用索引。我上面使用的例子有点做作,但在我的例子中,好像我有几百万辆自行车。。。我正在努力使它达到一定的规模,这样它可以每秒运行几次。