У меня есть две таблицы Продажа и Покупка. Мой запрос дает мне желаемый результат, я осторожно отношусь к этой производительности, поэтому PLZ направляет меня, если это может быть лучше. Мои таблицы:
Таблица ПродажаРабочая оптимизация запросов SQL Server 2005
UserId | ProductId | ProductName | ProductPrice
1 | p_101 | Cycle | 500
1 | p_121 | Car | 500000
2 | p_111 | Cycle | 5000
Таблица Purchase
UserId | ProductId | ProductName | ProductPrice
1 | p_109 | CellPhone | 150
2 | p_121 | Car | 500000
3 | p_111 | Book | 15
Желаемая таблицы вывода
Type | ProductId | ProductName | ProductPrice
Sell | p_101 | Cycle | 500
Sell | p_121 | Car | 500000
Purchase| p_109 | CellPhone | 150
Рабочий запрос:
SELECT type, P1.ProductId, P1.ProductName, P1.ProductPrice
FROM
(
SELECT s.UserId, 'Sell' as type, s.ProductId, s.ProductName, s.ProductPrice FROM [Sell] s
UNION
SELECT p.userid, 'Purchase' as type, p.ProductId, p.ProductName, p.ProductPrice FROM [Purchase] p
) as P1
WHERE userid=1
У вас есть план выполнения запроса? Любые индексы? Это ms-sql? Это может быть лучше подходит для dba.stackexchange.com ... Число строк в этих таблицах? – rene
Просто мысль: Move 'WHERE userid = 1' to internal Выбирает – Nalaka526
@rene, nop ... У меня нет выполнения и индексов запросов. – Sohail