PrepAway - Latest Free Exam Questions & Answers

Which query should you use?

Your database contains two tables named DomesticSalesOrders and InternationalSalesOrders. Both
tables contain more than 100 million rows. Each table has a Primary Key column named
SalesOrderId. The data in the two tables is distinct from one another.

Business users want a report that includes aggregate information about the total number of global
sales and total sales amounts.
You need to ensure that your query executes in the minimum possible time.
Which query should you use?

PrepAway - Latest Free Exam Questions & Answers

A.
SELECT COUNT(*) AS NumberOfSales, SUM(SalesAmount) AS TotalSalesAmount
FROM (
SELECT SalesOrderId, SalesAmount
FROM DomesticSalesOrders
UNION ALL
SELECT SalesOrderId, SalesAmount
FROM InternationalSalesOrders
) AS p

B.
SELECT COUNT(*) AS NumberOfSales, SUM(SalesAmount) AS TotalSalesAmount
FROM (
SELECT SalesOrderId, SalesAmount
FROM DomesticSalesOrders
UNION
SELECT SalesOrderId, SalesAmount
FROM InternationalSalesOrders
) AS p

C.
SELECT COUNT(*) AS NumberOfSales, SUM(SalesAmount) AS TotalSalesAmount
FROM DomesticSalesOrders
UNION
SELECT COUNT(*) AS NumberOfSales, SUM(SalesAmount) AS TotalSalesAmount
FROM InternationalSalesOrders

D.
SELECT COUNT(*) AS NumberOfSales, SUM(SalesAmount) AS TotalSalesAmount
FROM DomesticSalesOrders
UNION ALL
SELECT COUNT(*) AS NumberOfSales, SUM(SalesAmount) AS TotalSalesAmount
FROM InternationalSalesOrders

Explanation:
http://msdn.microsoft.com/en-us/library/ms180026.aspx
http://blog.sqlauthority.com/2009/03/11/sql-server-difference-between-union-vs-unionall-optimalperformance-comparison/

10 Comments on “Which query should you use?

  1. Durga Prasad Palepu says:

    Answer is A.
    In this scenario, the data is distinct so UNION ALL will be faster.
    Using UNION clause will try to identify the distinct records which impacts the query performance.




    0



    0
  2. Tortellini says:

    UNION removes duplicate records (where all columns in the results are the same), UNION ALL does not.

    There is a performance hit when using UNION vs UNION ALL, since the database server must do additional work to remove the duplicate rows, but usually you do not want the duplicates (especially when developing reports).




    0



    0

Leave a Reply