创建高效查询

下表列出了创建高效查询时要考虑的重要概念。

范围 说明
索引 确保查询筛选器至少包含一个索引的属性。
有关详细信息,请参阅索引的属性
类与类别 语句“objectClass=xyz”表示目录对象,其中“xyz”表示对象类层次结构中的任何类,而对于“objectCategory=xyz”表示的目录对象,“xyz”表示对象类层次结构中的某一特定类。 objectClass 属性可以有多个值,而 objectCategory 只有一个值,因此更适合在目录搜索中匹配对象的类型。
文本搜索 避免搜索字符串中间和末尾的文本。
例如,“cn=*hille*”或“cn=*larouse”。
使用更具体的匹配条件往往会提高搜索效果。 这是因为 Active Directory 域服务将评估所有谓词,标识索引,然后选择一个最有可能生成最小返回值的索引。 此方法不适用于搜索字符串中间和字符串末尾。 如果除了使用这些搜索之外没有其他选项,则可以为属性定义元组索引。
有关元组索引的更多详细信息,请参阅元组索引的工作原理
子树搜索 如果要考虑子树搜索,请使用全局目录。 追踪引荐需要大量的资源。
有关详细信息,请参阅指定其他搜索选项
使用分页 假设子树搜索将返回大型结果集。 执行子树搜索时请使用分页。 服务器将以区块为单位流式传输大型结果集,从而减少服务器端内存资源。 这样可以最大程度地减少网络使用,并减少通过网络发送大量数据的需求。
有关详细信息,请参阅指定其他搜索选项
合并搜索 搜索时使用多个属性。 为对象进行读取两个属性的一次搜索比同一对象的两次搜索更有效,每次搜索返回一个属性。
有效使用绑定 一次绑定到对象,并保留会话其余部分的绑定句柄。 不要为每个调用绑定和取消绑定。 如果使用 ADO 或 OLE DB,请不要创建多个连接对象。
RoodDSE 缓存 读取 rootDSE 一次,并记住会话其余部分的内容。
有关详细信息,请参阅无服务器绑定和 RootDSE
引用暂留 将对对象的引用保留为 GUID,而不是可分辨名称,以便重命名和删除安全。
有关详细信息,请参阅使用 objectGUID 绑定到对象