両方の場合の時間計算量を見てみましょう:
アレイアプローチ: M rows
のエンティティテーブル 、size N
のACLエントリ配列 (ACLテーブルの行はここでは関係ありません)
時間計算量 :O [N * log(M)]
アプローチに参加する: M rows
のエンティティテーブル 、N rows
のACLテーブルを使用
時間計算量 :O [M + N]
実際には、一般的に次のような状況になります。
アレイ内
N=10,000
M=1,000,000
O=>60,000
参加
N=10,000
M=1,000,000
O=>1,010,000
そして理論的には、アレイ内の最悪のシナリオは
アレイ内
N=1,000,000,000
M=1,000,000,000
O=>9,000,000,000
参加
N=1,000,000,000
M=1,000,000,000
O=>2,000,000,000
これはどういう意味ですか?要約/TL;DR
各ユーザーにエンティティ内のオブジェクトの一部へのアクセスのみが許可されている場合は、IN配列を使用します。
各ユーザーがエンティティのすべてのオブジェクトのACLエントリを持つ場合は、JOINを使用します。ゲインは数桁にはなりませんが(数兆の製品がない限り)、INアレイを使用することをお勧めします。
どちらの場合も、絶対に必要な場合にのみACLを使用してください。有権者FTW!