Maison > base de données > tutoriel mysql > le corps du texte

mysql 优化 left join

WBOY
Libérer: 2016-06-06 09:36:14
original
1220 Les gens l'ont consulté

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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!