[英]Substitute join to leave only one 'Table Scan'
我有以下有效的查詢:
SELECT a.Ticker, a.Value - l.Value as 'ShareholdersEquity'
FROM FinData a
JOIN FinData l
ON a.Ticker = l.Ticker AND a.Date = l.Date
WHERE a.Type = 'assets'
AND l.Type = 'liabilities'
但是對於一個有很多記錄的表,這會很慢,因為當我用 Explain 檢查查詢時(我使用 Azure Data Studio),它會進行 2 次表掃描,這意味着更多的時間。 我怎樣才能重寫它更快?
您可以嘗試條件聚合而不是自連接:
select ticker, date,
sum(case when type = 'asset' then value else - value end) as ShareholdersEquity
from findata
where type in ('asset', 'liabilities')
group by ticker, date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.