我可以使用临时表来提高mysql的查询性能

时间:2015-11-26 08:39:01

标签: mysql

我需要从UserMessage表中查询数据,并需要从UserAccount表中获取消息的用户值。 在正常情况下,我们可以使用以下SQL进行查询。

select * from UserMessage m
left join UserAccount a on m.userId = a.userId
where m.type=1 and m.date between '2015-11-01' and '2015-11-05'
但是,实际上,我的UserMessage和UserAccount表的数据量特别大,但是,上述查询表达式的条件,不需要参与UserAccount表,特别是少量的UserMessage过滤数据,只有20左右。所以,我使用临时表来优化查询。

select * from (select * from UserMessage where type=1 and date between '2015-11-01' and '2015-11-05') m
left join UserAccount a on m.userId = a.userId

所以,我想知道,当表中的条件表达式不需要关联判断的参与时,数据库首先过滤数据然后与其他表关联,或者直接相关然后过滤数据! / p>

众所周知,临时表mysql会有一定程度的性能损失。

0 个答案:

没有答案