クエリのスコープ
クエリのスコープは、バインド先のオブジェクトによって決まります。 オブジェクトが企業内のどこにあるかわからない場合は、できるだけ広範囲の検索を行う必要があります。 ただし、オブジェクトが特定のドメイン (ユーザーが接続しているドメインなど) または特定のグループ (Managersグループなど) に含まれていることがわかっている場合は、状況を反映するように検索のスコープを設定する必要があります。 最適なパフォーマンスを得るには、検索するオブジェクトの数をできるだけ少なくするようにスコープを設定する必要があります。
オブジェクトが企業内のどこにあるかわからない場合は、グローバルカタログサービスにバインドできます。 グローバルカタログサービスには、ディレクトリ内のすべてのオブジェクトの一覧と、各オブジェクトの属性の小さなサブセットが含まれています。 グローバルカタログでオブジェクトが見つかったら、その識別名をグローバルカタログから取得し、その識別名を使用してオブジェクトにバインドし、他の操作を実行できます。
バインド先のオブジェクトを決定したら、次の図に示すように、基本クエリ、1レベルクエリ、またはサブツリー検索のいずれかのスコープにクエリをさらに制限できます。
基準
基本クエリは、検索を基本オブジェクトのみに制限します。 返されるオブジェクトの最大数は常に1です。 この検索を使用して、オブジェクトの存在を確認できます。 たとえば、オブジェクトの識別名があり、パスに基づいてオブジェクトの存在を確認する必要がある場合は、1レベルの検索を使用できます。 検索が失敗した場合は、オブジェクトの名前が変更されたか、別の場所に移動されたか、オブジェクトに関する誤ったデータが指定された可能性があります。 オブジェクトを再表示する場合は、識別名ではなくGUIDを格納する必要があることに注意してください。 これにより、永続化されたリンクを壊すことなく、ディレクトリ階層内でオブジェクトの名前を変更したり、移動したりできます。
1 レベル
1レベルの検索は、ベースオブジェクトの直接の子に制限されますが、ベースオブジェクト自体は除外されます。 この設定では、親オブジェクトの直接の子オブジェクトを対象とした検索を実行できます。 たとえば、P1という親オブジェクトがあり、その直接の子が次のようになっているとします。C1、C2、C3の場合、1レベルの検索では、条件を評価するときにC1、C2、およびC3を含める必要がありますが、P1は検索に含まれません。 1レベルの検索を使用すると、オブジェクトのすべての子を列挙できます。 実際、一部のADSIプロバイダーでは、IADsContainer列挙は1レベルの検索に変換されます。
サブツリー
詳細検索とも呼ばれるサブツリー検索には、ベースオブジェクト自体を除く、ベースオブジェクトの下にあるすべてのオブジェクトが含まれます。 この検索では、他のサーバーへの参照が生成される場合があります。 この検索は最大のスコープを持ち、大量の結果セットを返す可能性があります。 可能であれば、少なくとも1つのインデックス付き属性で検索し、検索要件に合わせて参照設定(詳細については、 パフォーマンスと大きな結果セットの処理 を参照してください。)を設定します。 また、サブツリー検索の結果を非同期的に実行してページングし、サーバーのオーバーヘッドとネットワークの有効性を減らすこともお勧めします。 サブツリー検索は、通常、特定のスコープのオブジェクトを検索するために使用されます。 たとえば、30日以内に有効期限が切れるアカウントを持つすべてのユーザーを検索します。