Следующий запрос получает информацию, которая мне нужна. Тем не менее, я заметил, что по мере роста таблиц мой код становится медленнее и медленнее. Я предполагаю, что это этот запрос. Может ли это написать другой способ сделать его более эффективным? Я много слышал об использовании объединений вместо подзапросов, однако я не «получаю», как это сделать.Как оптимизировать этот запрос?
SELECT * FROM
(SELECT MAX(T.id) AS MAXid
FROM transactions AS T
GROUP BY T.position
ORDER BY T.position) AS result1,
(SELECT T.id AS id, T.symbol, T.t_type, T.degree, T.position, T.shares, T.price, T.completed, T.t_date,
DATEDIFF(CURRENT_DATE, T.t_date) AS days_past,
IFNULL(SUM(S.shares), 0) AS subtrans_shares,
T.shares - IFNULL(SUM(S.shares),0) AS due_shares,
(SELECT IFNULL(SUM(IF(SO.t_type = 'sell', -SO.shares, SO.shares)), 0)
FROM subtransactions AS SO WHERE SO.symbol = T.symbol) AS owned_shares
FROM transactions AS T
LEFT OUTER JOIN subtransactions AS S
ON T.id = S.transid
GROUP BY T.id
ORDER BY T.position) AS result2
WHERE MAXid = id
Можете ли вы публиковать операторы CREATE в таблице с индексами? –