我有嵌套集表(MySQL),其中有大約150萬條記錄。 表結構是:MySQL查詢獲取嵌套集的節點的完整路徑
id | name | root_id | lft | rgt | level
我需要得到的字符串,包含所有的父記錄加上記錄名稱名稱,姑且稱之爲「FULL_NAME」。 例如,對於「洛杉磯」記錄將是
"United States, California, Los Angeles"
。
我可以查詢所有名字ONE紀錄:
SELECT parent.name
FROM location AS node,
location AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND parent.root_id=node.root_id AND node.id=:id
ORDER BY parent.level
,並建立使用FULL_NAME破滅()
但這一要求適用於只有一個記錄,有以下幾個呼叫過於緩慢的工作。 所以現在我想給獅身人面像索引添加'full_name'(或者直接添加到MySQL)。
問題:
是否有可能建立這樣的SQL查詢,將選擇「FULL_NAME」每個記錄把它放到獅身人面像索引?我認爲這將是這種情況的理想解決方案。
我也嘗試更新MySQL表添加'full_name'字段,但我的更新請求將需要幾天才能完成作業。這是好主意嗎?是否有可能使此更新足夠快?
我在想,也許我應該搬到PostgreSQL和使用分層請求(我沒有這個數據庫的經驗,所以不能確定)?
謝謝
另外還有一個提示:層數不是預定義的。 – yuga
對不起,這不是表格定義:'id |名稱| root_id | lft | rgt | level'。也許真正的人需要的不僅僅是你的簡短表示法。 – wildplasser