矩陣賬戶—多叉樹結(jié)構(gòu)如何優(yōu)化查詢性能

背景

在一些復(fù)雜的業(yè)務(wù)場景中,需要維護多級賬戶矩陣的關(guān)系。即多層級的母子賬戶關(guān)系。此時如果賬戶A1登錄后,他需要查詢到它下面所有的子賬戶列表。此時應(yīng)該如何去做。

賬戶矩陣關(guān)系.png

假設(shè)表結(jié)構(gòu)中,每一條記錄均存儲parentId的字段,那么通過遞歸查詢,那么就可以將全部的數(shù)據(jù)都查詢出來。

如果n層矩陣的話,大約要遞歸查詢n次

select * from tableA where parentId in ()

思路

我們可以在表中維護一個字段 parent_id_path,這個字段的目的就是維護目錄關(guān)系:例如C1的記錄維護的是A1,B1,C1,B1維護的是A1,B1,A1維護的是A1

如果查詢A1的所有子賬戶,那么查詢語句變成了

select * from tableA where parentId like 'A1,%'

通過like查詢的特性,快速將所有命中條件的子賬戶都查詢出來。

缺點:因為每一層均維護了目錄樹的鏈路,當(dāng)矩陣發(fā)生替換后,發(fā)生替換的每一層節(jié)點都需要做出變更。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容