UNION berarti UNION DISTINCT dan ini relatif lambat karena akan memeriksa duplikat meskipun tidak akan ada. Anda ingin 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
Saya membayangkan bahwa setelah perubahan ini tidak ada banyak perbedaan dalam kinerja antara ketiga kueri. Cara terbaik untuk memastikannya adalah dengan mengukurnya.