Torque,
UNION без кляузы 'ALL' требует добавить из источника S, указанного "под" ним, в набор T, сформированный "выше" него, только те строки, которые отсутствуют в T.
В firebird'e наличие строк в наборе T проверяется сортировкой последнего. Это приведёт к выводу строк в УПОРЯДОЧЕННОМ виде.
SQL> create table t2(f01 int);
SQL> commit;
SQL> insert into t2 values(20000);
SQL> insert into t2 values(2);
SQL> commit;
SQL> create table t3(f01 int);
SQL> commit;
SQL> insert into t3 values(33333);
SQL> insert into t3 values(3);
SQL> commit;
SQL> select * from t2;
F01
============
20000
2
SQL> select * from t3;
F01
============
33333
3
SQL> select * from t2 union select * from t3;
F01
============
2
3
20000
33333
PS. Сортировка в плане НЕ показывается, так что затраты могут быть существенными и вроде "непонятно отчего".