怎樣在 MySQL 表中儲存樹形結構資料?

時間 2021-05-12 07:11:51

1樓:

PostgreSQL 的話有乙個 LTREE 擴充套件,看上去很棒,打算試試

ltree

其實就是對 Path Enumerations 用了專門的資料結構

2樓:陳偉嘉

隨著SQL資料庫的發展,現在的流行資料庫已經為樹形結構的查詢進行了優化,基本支援 CTE標準裡面的With Recursive語句。這個語句對Adjacency List(每一條記錄存parent_id)大部分常見查詢效能很高。你可以看一下這篇文章:

Adjacency list vs. nested sets: PostgreSQL 我們也自己對幾種常見操作進行了效能測試(100w Rows):

OperationAdjacency List Nested

Find immediate decendants尋找下面只有一層的子節點9ms97ms

Find all descendants of a given node找到下面所有子節點580ms120ms

Find all ancestors of a given node9ms3606ms

Find all descendants of a given node up to 2 levels13ms98ms

Add descendants/Remove descendants ---- 都很快,沒有差別

3樓:谷泉江

最近更新: 還是採用sql資料庫實現的,很簡單。

最近處理雲盤系統也面臨這個問題,準備採用No-sql 資料庫結合json 來實現,參考文件如下:Storing Hierarchical Data in a Database

資料庫儲存樹形結構的資料

4樓:mysqlops

就是節點與節點之間的關係,與商品的分類也類似,你設計成父子字段,並且標記之間的關係圖譜就是,在業務支援通用性、分類調整成本、查詢成本等多個維度權衡即可!

5樓:謝召煥

參考這個:

mysql先分了10張表,後續在分表如何處理?

石寧 最討厭問分表的問題 1,你有多少資料幾千萬內沒必要分 2,查詢頻率,iops幾十你和我說分表?3,索引是否已經合理,explain都沒用過你和我講分表?不過當你懂三面三個就不會在這裡問分表問題了 問題描述的略簡單了。如果是按照日期分表的,加表就可以。如果是hash分表的,就算一致性雜湊也是需要...

如何讓MySQL在建立表的時候欄位名區分大小寫?

西安鷗鵬IT培訓 mysql是否區分大小寫,可以使用show Variables like table names 檢視lower case table names的值,0代表區分,1代表不區分。如何讓mysql資料表內的varchar欄位區分大小寫?mysql對於型別為varchar資料預設不區分...

怎樣在黑暗環境中保持走直線?

3思而後買 做乙個直男,走路都不會拐彎那種!呃,不過我想各位需要一件神器 以因對突發事件 關鍵字 一次性照明棒 不差錢的可以用 夜視儀 大遊俠沙里飛 高中地理老師講過,除赤道外,地球上任何地方的人運動時都會受到 地轉偏向力 由地球自轉引起,北半球向右,南半球向左,這會導致人所走的路線與你想象的路線出...