我們有一些SQL可以在較小的數據量上正常運行,但是一旦我們擴展到從較大的卷中進行選擇,就會出現問題。是否有更快的替代方式來實現與以下相同的輸出?這個想法是拉回一個獨特的行來獲取最新版本的數據... SQL確實引用了另一個視圖,但是這個視圖運行速度非常快 - 所以我們期望這個問題在下面,並且想要嘗試不同的方法SQL效率不夠高,需要調整幫助
SELECT *
FROM
(SELECT (select CustomerId from PremiseProviderVersionsToday
where PremiseProviderId = b.PremiseProviderId) as CustomerId,
c.D3001_MeterId, b.CoreSPID, a.EnteredBy,
ROW_NUMBER() OVER (PARTITION BY b.PremiseProviderId
ORDER BY a.effectiveDate DESC) AS rowNumber
FROM PremiseMeterProviderVersions a, PremiseProviders b,
PremiseMeterProviders c
WHERE (a.TransactionDateTimeEnd IS NULL
AND a.PremiseMeterProviderId = c.PremiseMeterProviderId
AND b.PremiseProviderId = c.PremiseProviderId)
) data
WHERE data.rowNumber = 1
問題尋求調整,將需要包括執行計劃,模式和參與問題 – TheGameiswar
這部分「PremiseMeterProviderVersions一個,PremiseProviders B,PremiseMeterProviders C」的表的計數意味着你呼籲在所有領域表..爲什麼你不叫一個特定的領域,你只需要不打電話給所有的領域。 –
您是否嘗試過使用'INNER JOIN',特別是爲了更好的清晰度?你有沒有嘗試評論子查詢,看看他們中的一個是否是原因? – Andrew