Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ORDEM POR condição


UNION significa UNION DISTINCT e isso é relativamente lento, pois verificará se há duplicatas, mesmo que não haja nenhuma. Você quer UNION ALL:
SELECT *, 0 AS head FROM foo WHERE id IN (1,2,3) 
UNION ALL
SELECT *, 1 AS head FROM foo WHERE id NOT IN (1,2,3)
ORDER BY head, created_date

Imagino que após essa alteração não haja muita diferença de desempenho entre as três consultas. A melhor maneira de ter certeza é medindo.