handermysql多张表join_mysql多表联合查询(leftjoin)优化
mysql语句多表查询有三个数据表,消息表message,联系⼈表contact,⽤户表user,switch语句的语法和执行
message表中有 username,contact_username,分别对应user.username,contact.username类型为varchar(50)并且已经建⽴啦索引
查消息列表的时候数据量少的时候可以直接⽤下⾯语句
select * from message left join user on message.username=user.username left join contact act_username=contact
pipeline数据是什么意思数据结构与算法推荐网课但是如果message表的数据到达百万千万级别的时候这种查询就显⽰得慢啦很多,虽然usename,contact_username都可以加索引,但是
因为同时只能⽤⼀个索引所以message这个表会放弃索引转为值班表扫描,
优化⽅法为先从message中出指定的记录并且创建⼀个临时表,然后⽤这个临时表和其它它联合查询其它信息,如下javascript app
select * from (select * from message order by message_id desc limit 10) tem_message left join user on tem_message.username=us
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论