這樣處理的弊端是:如果資料量大,子分類很多,達到4級以上,這方法處理極端佔用資料庫連線池
對效能影響很大。
如果用sql下面的cte遞迴處理的話,一次性就能把結果給查詢出來,而且效能很不錯
比用程式處理(資料量很大的情況),臨時表效能更好,更方便
複製** **如下:
with area as(
select *,id px,cast(id as nvarchar(4000)) px2 from region where parentidzkplwtcd=0
union all
select a.*,b.px,b.px2+ltrim(adzkplwtc.region_id) from region a join area b on a.parentid=b.id
)select * from area orddzkplwtcer by px,px2
可以查詢出結果—-所有分類及相應分類下子分類
id title parentid
1 廣東省 0
2 廣州 1
3 白雲區 2
4 深圳 1
5 湖南省 0
6 長沙 5
7 株洲 5
複製** **如下:
with area as(
select * frdzkplwtcom region where parentid=1
union all
select a.* from region a join area b on a.parentid=b.id
)select * from area
可以查詢出結果—-指定分類及相應分類下子分類
id title parentid
1 廣東省 0
2 廣州 1
3 白雲區 2
效能分析:
對於一個3500條地區記錄的資料表,其中有省,市,縣3級
查詢用時要1秒,視覺上感覺有點點慢,但不影響
資料量不大的分類,使dzkplwtc用絕對無壓力
本文標題: sql處理多級分類,查詢結果呈樹形結構
本文地址: