MYSQL:为后续连接保存查询结果

时间:2012-12-26 18:13:43

标签: mysql join

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

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

问题:

由于对于单独的JOIN查询(事件,帖子等)使用了相同的user_id几次,我想知道是否可以在mysql内部存储结果以加快后续速度JOIN使用数据的查询。

被拒绝的解决方案:

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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