От гледна точка на производителността, тези заявки са идентични.
UNION ALL няма да навреди на производителността, тъй като Oracle оценява UNION 'ed заявка само когато има нужда от нея, тя не кешира първо резултатите.
SELECT синтаксисът е по-гъвкав в този смисъл, че можете по-лесно да манипулирате SELECT запитайте, ако искате да промените нещо.
Например тази заявка:
insert into pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
select 8000,0,'Multi 8000',1 from dual
union all select 8001,0,'Multi 8001',1 from dual
може да се пренапише като
INSERT
INTO pager (PAG_ID,PAG_PARENT,PAG_NAME,PAG_ACTIVE)
SELECT 7999 + level, 0, 'Multi ' || 7999 + level, 1
FROM dual
CONNECT BY
level <= 2
Като замените 2 с подходящ номер можете да получите произволен брой редове.
В случай на INSERT ALL , ще трябва да дублирате описанието на таблицата на местоназначението, което е по-малко четливо, ако имате нужда, да речем, 40 редове.