Oracle 11g データベースには、主キー I_Node (int) と、同じテーブル内の別のレコードを参照する I_Parent_Node (int) という列を持つテーブルがあります。ルート ノードは I_Parent_Node = null です。このようにして、ノード、リーフ、ブランチなど、呼びたい名前のツリー構造を形成します。
多くの場合、ノードのブランチ全体、つまりノードとそのすべての子を一度に削除する必要があります。場合によっては、50,000 件以上など、非常に多くのレコードがあります。自己参照テーブルではカスケード削除が許可されていないため、葉から始めてツリーを遡って 1 つずつ削除する必要があります。数時間の削除時間が発生しました。
別のプログラムがオフピーク時に削除のマークが付けられたノードを一掃する「削除のマーク」手法を実行することを検討していますが、データベース設計の変更またはその他の Oracle 構造がここで役立つかどうかに興味があります。仕事で学んだことを除けば、私は Oracle のトレーニングを受けていません。また、データベースを作成した人々は、それほど大量のことを念頭に置いていませんでした。データベースの設計はまだ固定されていないため、変更を受け入れます。