您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息
免费发信息
三六零分类信息网 > 南阳分类信息网,免费分类信息发布

mysql 优化 left join

2024/11/14 14:15:04发布36次查看
mysql优化
a(id,name,createtime)
b(id,aid,name,createtime)
b是a的记录表,a保留一条最新的记录,历史的移动到b中,因此一条a在b中有多条历史记录;
需求:当a在b中有记录时,则时间取b中对应记录的最早的创建时间,其他字段取a中的。
如果b中无数据,则取a中的全部数据
现在的解决方案是(由于数据敏感,以下为原数据表结构的对呀模型):
-- 如果b中有记录:
select * from (
select a.id,a.name,b.createtime
from a
inner join b on a.id=b.aid
order by b.createtime) tt
group by tt.id
union
-- 如果b中无记录http://ask.csdn.net/questions?type=reward#
select a.*
from a left join b on a.id=b.aid
where b.id is null
但是这样数据量过10万级别时候特别慢,a,b表都有主键。
求优化
南阳分类信息网,免费分类信息发布

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录