Thách thức tôi thấy với giải pháp:
FROM(
SELECT top(100) *
FROM Customers
UNION
SELECT top(100) *
FROM CustomerEurope
UNION
SELECT top(100) *
FROM CustomerAsia
UNION
SELECT top(100) *
FROM CustomerAmericas
)
là điều này tạo ra một tập dữ liệu có cửa sổ sẽ nằm trong RAM và trên các tập dữ liệu lớn hơn, giải pháp này sẽ tạo ra các vấn đề hiệu năng nghiêm trọng vì trước tiên nó phải tạo phân vùng và sau đó nó sẽ sử dụng phân vùng để ghi vào bảng tạm thời.
Một giải pháp tốt hơn sẽ là như sau:
SELECT top(100)* into #tmpFerdeen
FROM Customers
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerEurope
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAsia
Insert into #tmpFerdeen
SELECT top(100)*
FROM CustomerAmericas
để chọn chèn vào bảng tạm thời và sau đó thêm các hàng bổ sung. Tuy nhiên, rút lại ở đây là nếu có bất kỳ hàng trùng lặp trong dữ liệu.
Giải pháp tốt nhất sẽ là như sau:
Insert into #tmpFerdeen
SELECT top(100)*
FROM Customers
UNION
SELECT top(100)*
FROM CustomerEurope
UNION
SELECT top(100)*
FROM CustomerAsia
UNION
SELECT top(100)*
FROM CustomerAmericas
Phương pháp này sẽ hoạt động cho tất cả các mục đích yêu cầu các hàng riêng biệt. Tuy nhiên, nếu bạn muốn các hàng trùng lặp, chỉ cần trao đổi UNION cho UNION ALL
May mắn nhất!