程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> SQL處理多級分類,查詢結果呈樹形結構

SQL處理多級分類,查詢結果呈樹形結構

編輯:更多數據庫知識

這樣處理的弊端是:如果數據量大,子分類很多,達到4級以上,這方法處理極端占用數據庫連接池
對性能影響很大。

如果用SQL下面的CTE遞歸處理的話,一次性就能把結果給查詢出來,而且性能很不錯
比用程序處理(數據量很大的情況),臨時表性能更好,更方便
復制代碼 代碼如下:
with area as(
select *,id px,cast(id as nvarchar(4000)) px2 from region where parentid=0
union all
select a.*,b.px,b.px2+ltrim(a.region_id) from region a join area b on a.parentid=b.id
)select * from area order by px,px2


可以查詢出結果—-所有分類及相應分類下子分類
id title parentid
1 廣東省 0
2 廣州 1
3 白雲區 2
4 深圳 1
5 湖南省 0
6 長沙 5
7 株洲 5
復制代碼 代碼如下:
with area as(
select * from 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秒,視覺上感覺有點點慢,但不影響
數據量不大的分類,使用絕對無壓力

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved