1

我正在为我的大学开发一个应用程序,用户将能够定义一个过滤器并查看符合过滤条件的学生的帖子。

最初,MYSQL 将查询user_id所有符合过滤参数(年份、专业等)的学生。然后它将使用此结果查询并找到user_id通过 JOIN 链接到这些的相应帖子/事件。

问题:

由于相同user_id的 's 多次用于单独的 JOIN 查询(​​事件、帖子等),我想知道是否可以将结果内部存储在 mysql 中以加快使用数据的后续 JOIN 查询。

被拒绝的解决方案:

  1. 使用 MySQL 查询缓存 - 不适用,因为每次查询都不相同;初始连接序列是相同的,但随后将不同的连接参数应用于每个查询。
  2. 将数据拉入 API (php),然后使用 long 发送查询where user_id = IN(#, #, #...)。可能有 10,000 个用户 ID 要发送回 MYSQL。查询会很大,它会抵消 JOIN 的节省。
4

2 回答 2

1

不要解决不存在的性能问题。也就是说,首先尝试各种查询。如果它们满足应用程序的性能标准,请继续执行其他操作。用户对更多功能和更高稳定性更感兴趣,而不是从内部循环中挤出微秒。

也就是说,正常进程是一个临时表。但是,如果您的连接被正确索引并且结果集很小(也就是说,您没有进行全表扫描),那么性能提升可能可以忽略不计。

于 2012-12-26T18:18:25.343 回答
0

create or replace view database.foo_query_view as select id from students where [match-criteria]. 请注意,视图是只读的。但是,鉴于您似乎只想做选择,应该没问题。

于 2012-12-26T18:35:25.717 回答