建立有效率的查詢
下表會識別建立有效率查詢時要考慮的重要概念。
區域 | 描述 |
---|---|
編製索引 | 請確定查詢篩選至少包含一個索引屬性。 如需詳細資訊,請參閱 索引屬性。 |
類別與類別 | 語句 「objectClass=xyz」 是指 「xyz」 代表物件類別階層中任何類別的目錄物件,而 「objectCategory=xyz」 則是指 「xyz」 識別物件類別階層中特定類別的目錄物件。 objectClass 屬性可以採用多個值,而 objectCategory 會採用單一值,因此更適合在目錄搜尋中比對對對象的類型。 |
文字搜尋 | 避免在中間和字串結尾搜尋文字。 例如,“cn=*hille*” 或 “cn=*larouse”。 使用更具體的比對準則往往會增加搜尋效能。 這是因為 Active Directory 網域服務 會評估所有述詞、識別索引,然後選擇最有可能產生最小一組傳回值的索引。 這項技術不適用於中端字串搜尋。 如果您沒有使用這些搜尋以外的其他選項,您可以定義 屬性的 Tuple 索引。 如需 Tuple 索引的詳細資訊,請參閱 Tuple 索引的運作方式。 |
子樹搜尋 | 如果您要考慮子樹搜尋,請使用全域編錄。 追逐推薦需要大量的資源。 如需詳細資訊,請參閱 指定其他搜尋選項。 |
使用分頁 | 假設子樹搜尋會傳回大型結果集。 執行子樹搜尋時,請使用分頁。 伺服器會以區塊方式串流處理大型結果集,以減少伺服器端記憶體資源。 這可將網路使用量降到最低,並減少透過網路傳送大量數據的需求。 如需詳細資訊,請參閱 指定其他搜尋選項。 |
合併搜尋 | 使用多個屬性進行搜尋。 讀取兩個屬性的物件一次搜尋比相同物件的兩個搜尋更有效率,每個搜尋都會傳回一個屬性。 |
有效率地使用系結 | 一次系結至物件,並保留會話其餘部分的系結句柄。 請勿針對每個呼叫系結和解除系結。 如果您使用 ADO 或 OLE DB,請勿建立許多連接物件。 |
RoodDSE 快取 | 讀取 rootDSE 一次,並記住其其餘會話的內容。 如需詳細資訊,請參閱 無伺服器系結和 RootDSE。 |
參考持續性 | 將對象的參考保存為 GUID,而非辨別名稱,以便重新命名和刪除安全。 如需詳細資訊,請參閱 使用 objectGUID 系結至物件。 |