我正在为我的大学开发一个应用程序,用户可以在其中定义过滤器并查看符合过滤条件的学生帖子。
最初,MYSQL将查询以查找与过滤器参数(年份,专业等)匹配的所有学生的user_id
。然后,它将使用此结果查询并通过JOIN查找链接到user_id
的相应帖子/事件。
问题:
由于对于单独的JOIN查询(事件,帖子等)使用了相同的user_id
几次,我想知道是否可以在mysql内部存储结果以加快后续速度JOIN使用数据的查询。
被拒绝的解决方案:
where user_id = IN(#, #, #...)
发送查询。可能有10,000个用户ID要发送回MYSQL。查询会很大,会抵消JOIN节省。答案 0 :(得分:1)
不解决不存在的性能问题。也就是说,首先尝试各种查询。如果它们符合应用程序的性能标准,请继续并执行其他操作。用户对内部循环挤压微秒的兴趣要大于更多功能和稳定性。
那就是说,正常的过程是临时表。但是,如果您的连接被正确编入索引并且结果集很小(即,您没有进行全表扫描),那么性能增益可以忽略不计。
答案 1 :(得分:0)
create or replace view database.foo_query_view as select id from students where [match-criteria]
。请注意views are read-only。但是,鉴于您似乎只想做选择,它应该没问题。