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

UNION ALL et LIMIT dans MySQL

Actuellement, MySQL effectuera toutes les sélections sur une union même s'il y a suffisamment de lignes dans les premières requêtes, comme @Yuki Inoue l'a mentionné dans sa réponse. En utilisant la réponse de @ user1477929, vous pouvez réécrire votre requête comme :

(SELECT a FROM t1 WHERE a=10 AND B=1 LIMIT 1000) 
UNION ALL 
(SELECT a FROM t2 WHERE a=11 AND B=2 LIMIT 1000) 
UNION ALL 
(SELECT a FROM t3 WHERE a=12 AND B=3 LIMIT 1000) 
ORDER BY a LIMIT 1000;

qui vous donnera au plus 1000 lignes, et ne parcourra jamais plus de 3000.