다음 쿼리는 필요한 정보를 얻습니다. 그러나 테이블이 커지면 코드가 느려지고 느려집니다. 나는 그것이이 쿼리라고 생각하고있다. 이 방법을 사용하면 효율성을 높일 수 있습니까? 하위 쿼리 대신 조인을 사용하는 방법에 대해 많이 들었지만, 어떻게 수행해야하는지 알지 못합니다.이 쿼리는 어떻게 최적화합니까?
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 문을 게시 할 수 있습니까? –