调整Get-ADUser -Filter元素顺序是否影响Active Directory查询性能?
AD用户查询过滤器顺序对性能的影响分析
直接结论:颠倒ObjectClass与Name的条件顺序,不会影响Active Directory的查询性能,原因如下:
PowerShell过滤器的转换逻辑
你使用的Get-ADUser的-Filter参数,确实会被PowerShell转换成标准LDAP查询语句后再发送给AD服务器,但AD服务器并不会严格按照PowerShell里写的条件顺序来执行查询。AD查询引擎的自动优化
AD的LDAP查询引擎会自动分析查询条件,优先选择能利用索引的条件来缩小数据范围:ObjectClass -eq 'user'属于可利用索引的条件,AD会先用这个条件快速筛选出所有用户对象;Name -like '*foo*'是前缀通配的模糊查询,无法利用索引,只能在已经缩小的用户范围内逐一匹配。
不管你在PowerShell里把哪个条件写在前面,AD都会自动调整执行顺序,优先处理高效的索引条件,所以不会改变查询性能。
关于条件评估顺序
不需要纠结PowerShell里的左到右顺序,因为最终执行查询的是AD服务器,它会根据自身的索引策略和数据分布,选择最优的执行路径,完全不受PowerShell过滤器的书写顺序影响。
内容的提问来源于stack exchange,提问作者Shoddy Weather
相关产品推荐
相关产品推荐

