Theo quan điểm của hiệu suất, các truy vấn này giống hệt nhau.
UNION ALL
sẽ không ảnh hưởng đến hiệu suất, vì Oracle
ước tính UNION
'ed truy vấn chỉ khi nó cần, nó không lưu kết quả vào bộ nhớ cache trước.
SELECT
cú pháp linh hoạt hơn theo nghĩa là bạn có thể dễ dàng quản lý SELECT
truy vấn nếu bạn muốn thay đổi điều gì đó.
Ví dụ, truy vấn này:
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
có thể được viết lại thành
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
Bằng cách thay thế 2
với số lượng thích hợp, bạn có thể nhận được bất kỳ số hàng nào bạn muốn.
Trong trường hợp INSERT ALL
, bạn sẽ phải sao chép mô tả bảng đích, mô tả này khó đọc hơn nếu bạn cần, chẳng hạn, 40
hàng.