От гледна точка на производителността, тези заявки са идентични.
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
редове.