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表都有主键。
求优化