Создание эффективных запросов
В следующей таблице определены важные понятия, которые следует учитывать при создании эффективного запроса.
Область | Description |
---|---|
Индексирование | Убедитесь, что фильтр запросов содержит по крайней мере один индексированные атрибуты. Дополнительные сведения см. в разделе "Индексированные атрибуты". |
Класс и категория | Оператор objectClass=xyz ссылается на объекты каталога, в которых xyz представляет любой класс в иерархии классов объектов, в то время как objectCategory=xyz ссылается на те объекты каталога, в которых xyz определяет определенный класс в иерархии классов объектов. Свойство objectClass может принимать несколько значений, в то время как objectCategory принимает одно значение и, таким образом, лучше подходит для сопоставления типов объектов в поиске каталога. |
Поиск текста | Избегайте поиска текста в середине и в конце строки. Например, "cn=*hille*" или "cn=*larouse". Использование более конкретных критериев сопоставления, как правило, повышает производительность поиска. Это связано с тем, что службы домен Active Directory будут оценивать все предикаты, идентифицирует индексы, а затем выбирает один индекс, скорее всего, даст наименьший набор возвращаемых значений. Этот метод не работает хорошо с поиском в середине и концевой строке. Если у вас нет другого варианта, кроме использования этих поисковых запросов, можно определить индекс кортежа для атрибута. Дополнительные сведения об индексах кортежей см. в разделе "Как работает индексирование кортежей". |
Поиск поддерев | При рассмотрении поиска поддерев используйте глобальный каталог. Для обращения к рефералам требуются обширные ресурсы. Дополнительные сведения см. в разделе "Указание других параметров поиска". |
Использование разбиения по страницам | Предположим, что поиск поддерев возвращает большой результирующий набор. Используйте разбиение по страницам при выполнении поиска поддерев. Сервер будет передавать большой результирующий набор в блоках, уменьшая ресурсы памяти на стороне сервера. Это сводит к минимуму использование сети и сокращает потребность в отправке больших блоков данных по сети. Дополнительные сведения см. в разделе "Указание других параметров поиска". |
Объединение поисковых запросов | Используйте несколько атрибутов для поиска. Один поиск объекта, считывающего два атрибута, является более эффективным, чем два поиска одного и того же объекта, каждый возвращающий один атрибут. |
Эффективное использование привязки | Привязка к объекту один раз и удерживайте дескриптор привязки для остальной части сеанса. Не привязывайтесь и отменяйте привязку для каждого вызова. Если вы используете ADO или OLE DB, не создавайте много объектов подключения. |
Кэширование RoodDSE | Прочтите rootDSE один раз и запомните его содержимое для остальной части сеанса. Дополнительные сведения см. в разделе "Бессерверная привязка" и rootDSE. |
Сохраняемость ссылок | Сохраняйте ссылки на объекты в виде идентификаторов GUID, а не различаемых имен, чтобы быть переименованы и удалены безопасно. Дополнительные сведения см. в разделе "Использование objectGUID для привязки к объекту". |