一條sql實現無限極分類
阿新 • • 發佈:2019-02-09
我還沒提到就有人迫不及待的想回答,遞迴唄,但是你們想過沒有,遞迴的話,如果有3000個分類,有一級,二級,三級,四級的列表。你這個程式壓根就跑不動,你或許會說快取唄,但是生成快取的速度是你無法忍受的。
遞迴做法表結構建立:
id | int(10) | 分類id |
name | varchar(64)8804 | 分類名稱 |
reid | int(10) | 父類id |
需求一:
需求2:
需求1比較簡單,沒啥資料量,用ajax展示開啟就行,但是需求2要全部列出來這就難倒我們了,如果按照某些人的做法不斷的遞迴查詢sql,一旦分類達到3000個的時候,根本打不開的網站
織夢cms的思路是這樣的:
id | 分類id |
topid | 頂級id |
reid | 父類id |
沒錯這種思路比第一種要簡化很多,只是多了個欄位,但是執行效率就絕對不一樣了。
根據頂級分類找到它相應的二級分類,再根據二級分類遞迴調出三級分類。
我的思路:
父類id
id | 分類id |
reid | 父類id |
height | 層級 |
height層級
首先全表sql得到列表.
通過程式 把一級分類放在一個數組中,然後把二級分類放到一個數組裡。這樣通過一級分類找二級分類很容易了,不用再執行sql了,只需要在二級分類中找父類id等於某分類即可獲得該分類下的所有子分類,依次類推。