1
SELECT
TOP 10 pcchrgcod
FROM (
SELECT TOP 10 acctno AS pcchrgcod FROM hdocord
WHERE acctno LIKE '2007-000%'
GROUP BY
acctno
UNION
SELECT TOP 10 acctno AS pcchrgcod FROM hpatchrg
WHERE acctno LIKE '2007-000%'
GROUP BY
acctno
UNION
SELECT TOP 10 acctno AS pcchrgcod FROM hrqd
WHERE acctno LIKE '2007-000%'
GROUP BY
acctno
UNION
SELECT TOP 10 acctno AS pcchrgcod FROM hrxo
WHERE acctno LIKE '2007-000%'
GROUP BY
acctno
)
sub
GROUP BY
pcchrgcod
這是我的選擇與工會和子查詢和喜歡,這是返回OK結果卻是很慢的。所以我把工會變成了JOIN,我得到了這個MSSQL與工會子查詢選擇加入,並希望很慢
SELECT TOP 10 coalesce(t1.acctno, MAX(t2.acctno),MAX(t3.acctno),MAX(t4.acctno)) AS pcchrgcod
--t1.acctno AS t1pcchrgcod,
--t2.acctno AS t2pcchrgcod,
--t3.acctno AS t3pcchrgcod,
--t4.acctno AS t4pcchrgcod
FROM hdocord AS t1 LEFT JOIN
hpatchrg AS t2 ON t1.acctno = t2.acctno LEFT JOIN
hrqd AS t3 ON t2.acctno = t3.acctno LEFT JOIN
hrxo AS t4 ON t3.acctno = t4.acctno
WHERE t1.acctno LIKE '2007-000%'
GROUP BY
t1.acctno
--t2.acctno,
--t3.acctno,
--t4.acctno
它仍然很慢。
我怎樣才能讓這個選擇運行速度更快?
UPDATE
UPDATE
看看執行計劃,https://www.red-gate.com/simple-talk/sql/performance/execution-plan-basics/ – Leonidas199x
你擔心重複?如果沒有,請嘗試使用'UNION ALL',而不是'UNION',因爲'UNION'實際上是確保返回不同的值。 –
不,它只是非常緩慢,當我在sql服務器管理中運行它需要大約35 - 40返回10條記錄的結果,它很慢 – Martin