ユニオン UNION DISTINCTを意味します。これは、重複がない場合でも重複をチェックするため、比較的低速です。 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
この変更後、3つのクエリのパフォーマンスに大きな違いはないと思います。確実にするための最良の方法は、それを測定することです。