У меня есть таблица «Транзакция».Выберите SUM, используя SQL-подзапрос, слишком медленно
Сделка может иметь несколько «TransactionProduct».
Продукт транзакции может иметь несколько «PriceModifiers».
У меня есть запрос, который возвращает все транзакционные продукты с общим количеством модификаторов цен (сумма уменьшения).
Запрос:
SELECT
TRANSACTION.DESCRIPTION,
TRANSACTIONPRODUCT.PRODUCTNAME,
TRANSACTIONPRODUCT.EFFECTIVEPRICE,
(
SELECT SUM(AMOUNT)
FROM PRICEMODIFIER
WHERE TRANSACTIONPRODUCTID = TRANSACTIONPRODUCT.TRANSACTIONPRODUCTID
)
AS REDUCTIONAMOUNT
FROM
TRANSACTION,
TRANSACTIONPRODUCT
WHERE
TRANSACTION.TRANSACTIONID = TRANSACTIONPRODUCT.TRANSACTIONID
Если удалить подзапрос с суммой, запрос очень быстро выполнить.
С подзапроса, он занимает несколько секунд ...
Любая идея, как я могу улучшить запрос?
Вы можете добавить индексы. Есть ли какие-либо индексы? –
Месть ужасного запроса с восьмидесятых? 1) Синтаксис JOIN 2) псевдонимы таблицы 3) FULLCAPS 4) скалярные подзапросы 5) «транзакция» - зарезервированное слово/ключевое слово; старайтесь избегать, так как имя таблицы/столбца – wildplasser
включает в себя подзаголовок суммы как предложение с включением идентификатора и объединение по id вместо того, чтобы делать подзапрос для каждой строки. – SomeJavaGuy