2013-02-27 3 views
1

у меня есть это:Какой фильтр быстрее выполняет поиск всего пользователя в LDAP?

(& (ObjectCategory = человек) (объектный = пользователь))

И это:

(& (ObjectCategory = пользователь) (SamAccountName = *))

Какой из них будет быстрее? Я не очень хорошо знаком с архитектурой Active Directory ...

+0

вы проверили его? – Default

+0

@Default Я написал небольшую программу с использованием секундомера для измерения обоих вызовов в тиках, но иногда они имеют одинаковую скорость, когда-то одна быстрее, но когда-то это не так ... Итак, результат не так точен .... –

ответ

1

Это зависит от сервера. Если objectCategory имеет индекс равенства, а objectClass имеет индекс равенства иsamAccountName имеет индекс present, то количество возвращаемых записей и количество байтов на запись (в соответствии с запрошенными атрибутами) будут учитываться в стоимости выполнения поиск.

+0

хм, я немного путаюсь ... Поэтому для первого фильтра требуется objectCategory и objectClass имеет индекс. Для второго фильтра требуется, чтобы objectCategory и samAccountName имели индекс. если в обоих фильтрах нужны индексы, какие из них быстрее? Оба должны возвращать одинаковое количество байтов на запись, и оба должны возвращать одинаковое количество записей? –

1

Как уже упоминалось, существует множество условий сервера, которые могут играть в результаты в отношении производительности.

Также зависит от того, какие записи вы хотите вернуть. Как вы используете Active Directory, вы должны попробовать один из них:

Все пользователи:

(&(objectCategory=person)(objectClass=user)) 

или (мы обычно видим это как быстрее)

(sAMAccountType=805306368) 

Все контакты:

(objectClass=contact) 

Все пользователи и контакты:

(objectClass=user) 

-Джим