3

フォルダー パスを含むテーブルがあります。階層内のこれらのフォルダー間のすべての「ギャップ」を見つける必要があります。つまり、テーブルにこれらの 3 つのフォルダーが含まれている場合:

'A'
'A\B\C'
'A\B\C\D\E\F\G'

階層内で次の見つからないフォルダーを見つける必要があります。

'A\B'
'A\B\C\D'
'A\B\C\D\E'
'A\B\C\D\E\F'

このテーブルには250,000 を超えるフォルダーのレコードが含まれているため、最も効率的な方法を探します。そうしないと、スクリプトが長時間スタックしてしまい、時間がありません。

コメント: すべてのフォルダのリストはありません。私が持っているのは、階層内でそれらの間の「ギャップ」を見つける必要がある「ルート」フォルダーと「リーフ」フォルダーです。

2 番目のコメント: テーブルには複数の階層を含めることができ、すべての階層で「ギャップ」を見つける必要があります。さらに言えば、「DirID」と「BaseDirID」の2つの別のint列があります。「DirID」列は、テーブルの id 列です。「BaseDirID」には、階層内の最初のフォルダーの ID が含まれています。したがって、同じ階層のすべてのフォルダー (パス) は、この列で同じ値を共有します。サンプルデータの例:

サンプルデータの例

DirID   BaseDirID   DisplayPath
1   1   'A'
2   1   'A\B\C'
3   1   'A\B\C\D\E'
4   4   'U'
5   4   'U\V\W'
6   4   'U\V\W\X\Y'

したがって、次のデータを見つける必要があります。

予想された結果

BaseDirID   DisplayPath
1   'A\B'
1   'A\B\C\D'
4   'U\V'
4   'U\V\W\X'

前もって感謝します。

4

1 に答える 1