Mysql
 sql >> Base de données >  >> RDS >> Mysql

Optimiser une requête mysql UNION

Ce que vous montrez essentiellement, c'est que vous avez un problème de conception dans votre modèle où il semble que le mauvais choix ait été fait lors de l'implémentation des super/sous-types. Votre exigence fonctionnelle est d'avoir des données (simulaires) de deux tables différentes sous la forme d'un ensemble uniforme. Ce serait simple si toutes ces lignes avaient été dans une seule table. La vraie question est donc de savoir pourquoi ils ne le sont pas.

Vous pouvez toujours obtenir cette requête plus rapidement (je suppose) mais c'est moche.

SELECT * FROM 
   (SELECT * FROM (select title, id, date as date_added from test1 
                  ORDER BY date_added DESC LIMIT 0,8) t1
    UNION ALL 
    SELECT * FROM (select title, customer as id, date_added from test2 
                  ORDER BY date_added DESC LIMIT 0,8) t2
   ) joined
ORDER BY date_added DESC
LIMIT 0,8