如何使用 Spring 缓存来存储 MySQL table 并将其用于数据库调用

How to use Spring Cache to store a MySQL table and use that for a database call

我的 MySQL 服务器中目前有 2 个 table:

  1. 专利
  2. 发明者

我想做的是首先从 'patent' table 中获取数据并将其存储在缓存中。然后,使用缓存,我想在 SQL 查询中使用它来调用来自 'inventor' table.

的另一个更具体的数据

专利SQL查询是:

SELECT application_number, application_date, research_center FROM patent WHERE research_center = 'MIT';

'inventor' table 也有一个 'application_number' 列,我可以使用 INNER JOIN 从 'inventor' table 中获取所需的数据.

但是,我想知道是否可以缓存 'patent' 查询数据并将其用作 table 以内连接 'inventor' table?

例如:

SELECT t1.inventor, t1.application_number FROM (SELECT inventor.* FROM cache LEFT JOIN inventor ON cache.application_number = inventor.application_number) AS t1.

其中 'cache' 是缓存 table.

这可能吗?

谢谢!

你的 SQL 查询针对你的数据库运行,而你的缓存数据在另一个地方(在内存中,Redis,......)。因此,您 不能将其用作 table 来 INNER JOIN 'inventor' table。

作为一个思想实验,您可以缓存第一个查询的结果(研究如何在服务方法中使用@Cacheable),然后使用这些值填充模型层中第二个查询的参数。

但是由于您的 table 通常在同一个数据库中,因此这样做没有意义。您的 DBMS 会更快地为您完成。

使用临时table? 您即时创建 table,然后将其视为普通 table。我发现它使一些 多个 条件连接查询更快,但是您对两个 table 的查询以及其中一个的子集似乎很简单,不需要任何其他东西。