Langsame Suche nach Elementen mithilfe der erweiterten Eigenschaft in Exchange

Problem zur Hand

Unsere C # Windows-Anwendung verwendetEWS Managed API 2.0 Termine im Kalender eines Benutzers erstellen. Jeder Termin verfügt über eine erweiterte Eigenschaft mit einem eindeutigen Wert. Es findet später einen Termin mitFindItems und einItemView.

Bei der ersten Suche kommt es zu erheblichen Verzögerungen. Spätere Antwortzeiten sind durchaus akzeptabel.

("Erstes Mal" ist hier etwas vage, da Benutzer die Verzögerung möglicherweise später am Tag erneut bemerken.)

// locate ID of appointment where extended property value equals 1234:
var filter = new Ews.SearchFilter.IsEqualTo(extendedPropertyDefinition, 1234);
var view = new ItemView(1, 0);
view.PropertySet = BasePropertySet.IdOnly;
var folder = new FolderId(WellKnownFolderName.Calendar, new Mailbox("..."));
var result = service.FindItems(folder, filter, view);

Remote-Server ist einExchange Server 2007 SP1.

Forschung

MSDN verknüpft einige Kommentare mit Suchordnern und eingeschränkten AnsichtenIch bin mir jedoch nicht sicher, ob dies auf unsere Situation zutrifft.

Der Akt vonDurch das Anwenden einer Ansicht auf einen Ordner werden Suchordner im Speicher erstellt. Wenn ein Suchordner erstellt wird, wird er zur späteren Verwendung zwischengespeichert. Wenn ein Benutzer versucht, einen bereits vorhandenen Suchordner zu erstellen, wird der zwischengespeicherte Suchordner verwendet. Dies ermöglicht es, dass zukünftige Betrachtungen ziemlich schnell sind. Standardmäßig speichert Exchange nicht alle Suchordner auf unbestimmte Zeit im Cache.

Speziellin Bezug auf EWS:

Es ist auch wichtig zu wissen, dass eine Exchange-Informationsspeicher-Suchabfrage beim ersten Mal sehr langsam ausgeführt wird und möglicherweise eine Zeitüberschreitung aufweist, während sie bei zukünftigen Ausführungen ohne Probleme reagiert. Dies wird durch Back-End-Prozesse verursacht, die auf dem Exchange-Server bei der Durchführung einer Speichersuche auftreten.

Sie schlagen vor, Suchordner für unveränderte, nicht dynamische Abfragen zu erstellen, was in unserem Fall nicht passend erscheint, da die Abfrage für jeden Termin unterschiedlich ist.

Wenn für eine Anwendung eine bestimmte Abfrage erforderlich ist, deren Parameter sich nicht ändern, können Sie Suchordner verwenden. [...] Suchordner sind nur für unveränderte, nicht dynamische Abfragen nützlich.

Was wir brauchen, ist im Wesentlichen, einen "Index" - in Bezug auf die Datenbank - für die Eigenschaft zu erstellen, um sicherzustellen, dass alle Suchvorgänge durchgeführt werdenauf dieser spezifischen Eigenschaft sind schnell, egal zu welcher Zeit oder mit welcher Frequenz.

Ist es möglich, diese Eigenschaft zu indizieren? Kann irgendetwas Client- oder Serverseitig konfiguriert werden, um diese anfängliche Verzögerung zu beseitigen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage