Erstellen effizienter Abfragen
In der folgenden Tabelle sind wichtige Konzepte aufgeführt, die beim Erstellen einer effizienten Abfrage berücksichtigt werden müssen.
Bereich | Beschreibung |
---|---|
Indizierung | Stellen Sie sicher, dass der Abfragefilter mindestens ein indiziertes Attribut enthält. Weitere Informationen finden Sie unter Indizierte Attribute. |
Klasse im Vergleich zu Kategorie | Die Anweisung „objectClass=xyz“ bezieht sich auf Verzeichnisobjekte, in denen „xyz“ eine beliebige Klasse in der Objektklassenhierarchie darstellt. „objectCategory=xyz“ hingegen bezieht sich auf diese Verzeichnisobjekte, in denen „xyz“ eine bestimmte Klasse in der Objektklassenhierarchie identifiziert. Die Eigenschaft objectClass kann mehrere Werte akzeptieren, während objectCategory einen einzelnen Wert akzeptiert und somit besser für den Typabgleich von Objekten in einer Verzeichnissuche geeignet ist. |
Textsuche | Vermeiden Sie die Suche nach Text in der Mitte und am Ende einer Zeichenfolge. Beispiel: „cn=*hille*“ oder „cn=*larouse“. Die Verwendung spezifischerer Abgleichskriterien führt dazu, dass die Suchleistung erhöht wird. Das liegt daran, dass Active Directory Domain Services alle Prädikate auswertet, die Indizes identifiziert und dann einen Index auswählt, der höchstwahrscheinlich den kleinsten Satz zurückgegebener Werte liefert. Diese Technik funktioniert nicht gut bei der Suche in der Mitte und am Ende der Zeichenfolge. Wenn Sie keine andere Option als diese Suchvorgänge haben, können Sie einen Tupelindex für das Attribut definieren. Ausführlichere Informationen zu Tupelindizes finden Sie unter Funktionsweise von Tupelindizes. |
Unterstruktursuche | Verwenden Sie den globalen Katalog, wenn Sie die Unterstruktursuche in Betracht ziehen. Das Verfolgen von Empfehlungen erfordert umfangreiche Ressourcen. Weitere Informationen finden Sie unter Angeben anderer Suchoptionen. |
Verwenden der Auslagerung | Angenommen, eine Unterstruktursuche gibt ein großes Resultset zurück. Verwenden Sie die Auslagerung beim Ausführen von Unterstruktursuchen. Der Server streamt ein großes Resultset in Blöcken. Dadurch verringern sich die serverseitigen Speicherressourcen. Dadurch wird die Netzwerknutzung minimiert und die Notwendigkeit, große Datenblöcke über ein Netzwerk zu senden, verringert. Weitere Informationen finden Sie unter Angeben anderer Suchoptionen. |
Kombinieren von Suchvorgängen | Verwenden Sie mehrere Attribute für einen Suchvorgang. Eine Suchvorgang für ein Objekt, das zwei Attribute liest, ist effizienter als zwei Suchvorgänge für dasselbe Objekt, die beide ein Attribut zurückgeben. |
Effiziente Verwendung der Bindung | Führen Sie einmal eine Bindung an ein Objekt aus, und behalten Sie den Bindungshandle für die restliche Sitzung bei. Sie sollten nicht für jeden Aufruf eine Bindung ausführen und die Bindung wieder aufheben. Wenn Sie ADO oder OLE DB verwenden, erstellen Sie nicht viele Verbindungsobjekte. |
RoodDSE-Zwischenspeicherung | Lesen Sie rootDSE einmal, und merken Sie sich den Inhalt für die restliche Sitzung. Weitere Informationen finden Sie unter Serverlose Bindung und RootDSE. |
Verweispersistenz | Speichern Sie Verweise auf Objekte als GUIDs, nicht Distinguished Names, damit sie sicher umbenannt und gelöscht werden können Weitere Informationen finden Sie unter Binden an ein Objekt mithilfe von objectGUID. |