[英]Performance improvement for SQL count query
我將使用哪種類型的SQL查詢來進行以下操作;
| ID | SERIAL | LCN | INITLCN |
|------|----------|-------|---------|
| 1 | A | A1 | |
| 2 | B | A2 | |
| 3 | C | A3 | A1 |
| 4 | D | A4 | A2 |
| 5 | E | A5 | A1 |
|------|----------|-------|---------|
結果與此相似;
| ID | COUNT |
|------|---------|
| 1 | 2 |
| 2 | 1 |
|------|---------|
使用我較低的SQL技能,我設法編寫了以下查詢,但是它非常慢。
select
a.id,
count (b.id) as parent
from assets a
left join assets b
ON (a.lcn = b.initlcn)
group by a.id
order by a.id;
select
t1.ID,
t1.LCN,
COUNT(*)
from
Table1 t1
INNER JOIN Table1 t2 ON t1.LCN = t2.INITLCN
GROUP BY t1.LCN
看到它在sqlfiddle中實時工作。
也許兩個表聯接不是nesecerry。 嘗試這個
select
a.id
,b.cnt
from assets a
join (
select
initlcn
count(1) cnt
from assets
group by initlcn
)
b on (a.lcn=b.initlcn)
您還可以測試以下查詢-
我已經檢查了您發布的查詢和以下查詢的執行計划,並且兩者之間取得了很大的不同-
SELECT t_1.Id, t_2.Cnt
FROM Assets t_1,
(SELECT Initlcn, COUNT(*) Cnt FROM Assets GROUP BY Initlcn) t_2
WHERE t_1.Lcn = t_2.Initlcn
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.