Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Beim Abfragen von Daten mit FetchXML kann das Paginieren der Abfrageergebnisse das Anzeigen großer Informationsmengen erleichtern. Bei der Verwendung von Auslagerung ist es wichtig, auch Sortierparameter einzubeziehen. Ohne ordnungsgemäße Sortierung können Auslagerungsanforderungen für die „nächsten 50“-Datensätze dazu führen, dass dieselben Datensätze auf mehreren Seiten abgerufen werden, was Überprüfungen und Bearbeitungen erheblich erschwert. Für eine ordnungsgemäße Seitenreihenfolge müssen eindeutige Werte angegeben werden, um festzustellen, welche Datensätze auf einer Seite enthalten sind.
Veraltete Auslagerung
Veraltete Auslagerung innerhalb der Microsoft Dataverse lädt alle Ergebnisse der Abfrage bis zur aktuellen Seite in den Speicher des Servers, wählt die Anzahl der Datensätze aus, die für die Seite benötigt werden, und ignoriert dann den Rest. Dies hat Vorteile, wie ein schnelles Zurück-/Vorwärts-Blättern durch die Daten oder das Überspringen zu einer bestimmten Seite, aber auch Einschränkungen, wie ein Zeilenlimit von 50.000, Leistungsprobleme bei großen komplexen Abfragen und willkürlich sortierte unterschiedliche Abfrageergebnisse.
Bestellung mit einem Auslagerungs-Cookie
Beim Auslagern mit Sortierung wird ein Cache der Ergebnisse der vorherigen Seite in einem Auslagerungs-Cookie gespeichert. Dies wird verwendet, um zu berechnen, was auf der nächsten Datenseite angezeigt werden soll.
Wenn ein Benutzer keine „order by“-Parameter angibt, fügt das System automatisch „order by „<<entity name>>“.<<entityId>>asc“ ein, um eine grundlegende Sortierung bereitzustellen. Abhängig von den Daten, die abgefragt werden, kann dies zu unzureichenden und unerwarteten Ergebnissen führen, da ein einzelner Systembenutzer mehreren Datensätzen innerhalb einer Abfrage zugeordnet werden kann.
Wenn unterschiedliche FetchXML Abfragen verwendet werden, fügt das System aufgrund möglicher Auswirkungen auf die zurückgegebenen Daten keine zusätzliche Sortierung hinzu. In diesen Fällen müssen Benutzer mindestens einen einzelnen Sortierwert hinzufügen, um eine konsistentere Auslagerungserfahrung zu erzielen.
Hinweis
Die Seitennummerierung mit FetchXML für Dataverse ist dynamisch. Die Seite, auf der ein Datensatz angezeigt wird, wird zum Zeitpunkt des Renderns jeder Seite festgelegt. Wenn 1000 Datensätze mit 50 pro Seite angezeigt werden, werden die ersten 50 Datensätze als Seite eins angezeigt. Wenn Seite zwei angefordert wird, bestimmt das System, was die nächsten 50 Datensätze zum Zeitpunkt der Anforderung sein sollen. Aus diesem Grund wäre es nicht möglich, die neue Auslagerungsfunktion für das Zurück-Auslagern zu verwenden. Legacy-Verhalten wird für Zurück-Auslagerung verwendet, bei dem die Leistung beeinträchtigt ist, und Rückgaben nach Seite 500 aufgrund von Legacy-Einschränkungen nicht „zurück ausgelagert“ werden können. 
Warum ist Sortierung wichtig
Wenn eine Abfrage ausgeführt wird, um alle Datensätze mit dem Status „Offen“ abzurufen, kann dies zu 1000 Rückgaben führen. Beim Blättern von Seite eins zu Seite zwei kann das System nicht erkennen, welche Befehle auf Seite zwei angezeigt werden sollen, da alle Datensätze denselben Status haben. Das Auslagern dieser Datensätze ist nicht effizient oder konsistent.
Durch die Angabe eines Werts für „order by“ kann das Auslagerungs-Cookie die Daten nach einem zusätzlichen Wert sortieren und den letzten Datensatz auf einer Seite anhand der angegebenen Werte erkennen.
Beispiel 1
Es wird eine Abfrage erstellt, um alle Datensätze mit dem Status „Offen“ abzurufen, den Status für jeden Datensatz anzugeben und drei Datensätze pro Seite anzuzeigen. Die Abfrage wird dann nach Status sortiert. Das Abfrageergebnis würde wie in der folgenden Tabelle gezeigt geblättert:
| Zustand | Status | Seite |
|---|---|---|
| Geöffnet | Aktiv | 1 |
| Geöffnet | Aktiv | 1 |
| Geöffnet | Aktiv | Ende von Seite 1 |
| Geöffnet | Aktiv | |
| Geöffnet | Aktiv | |
| Geöffnet | Inaktiv | |
| Geöffnet | Inaktiv |
Das Auslagerungs-Cookie speichert Informationen zum letzten Datensatz auf der Seite. Wenn in diesem Beispiel jedoch Seite zwei abgerufen werden muss, gibt es keine eindeutige Kennung, um sicherzustellen, dass auf der nächsten Seite die nicht angezeigten Datensätze verwendet werden oder die ersten beiden Datensätze von Seite eins enthalten sind.
Um dieses Problem zu lösen, sollten Abfragen Spalten für „order by“ mit eindeutigen Werten enthalten. Es ist möglich, mehrere „order by“-Werte zu verwenden. Im Folgenden finden Sie eine bessere Möglichkeit, Daten für diese Abfrage zu sortieren:
Beispiel 2
Es wird eine Abfrage erstellt, um alle Datensätze des Status „Offen“ beliebiger Status, die Fall-ID einzuschließen und drei Datensätze pro Seite anzuzeigen. Es wird nach Status und nach Fall-ID (eine eindeutige Kennung) sortiert, die in aufsteigender Reihenfolge sortiert wird. Das Abfrageergebnis blättert die Ergebnisse wie im Folgenden gezeigt:
| Zustand | Status | Fall-ID | Seite |
|---|---|---|---|
| Geöffnet | Aktiv | Case-0010 | 1 |
| Geöffnet | Aktiv | Case-0021 | 1 |
| Geöffnet | Aktiv | Case-0032 | Ende von Seite 1 |
| Geöffnet | Aktiv | Case-0034 | |
| Geöffnet | Aktiv | Case-0070 | |
| Geöffnet | Inaktiv | Case-0015 | |
| Geöffnet | Inaktiv | Case-0047 |
Die Abfrageergebnisse werden zuerst nach Status und dann nach der Fall-ID in aufsteigender Reihenfolge sortiert. Wenn Seite zwei generiert wird, sieht das Ergebnis wie folgt aus:
| Zustand | Status | Fall-ID | Seite |
|---|---|---|---|
| Geöffnet | Aktiv | Case-0010 | |
| Geöffnet | Aktiv | Case-0021 | |
| Geöffnet | Aktiv | Case-0032 | Ende von Seite 1 |
| Geöffnet | Aktiv | Case-0034 | 2 |
| Geöffnet | Aktiv | Case-0070 | 2 |
| Geöffnet | Inaktiv | Case-0015 | |
| Geöffnet | Inaktiv | Case-0047 |
Beim Generieren von Seite zwei dieses Abfragesatzes wird in dem Cookie Case-0032 als letzter Datensatz auf der ersten Seite gespeichert, sodass Seite zwei beim nächsten Datensatz im Satz nach diesem Datensatz aufgenommen wird. Dies ermöglicht konsistentere Ergebnisse.
Sortiervorschläge
Nachfolgend sind einige Vorschläge zur Verbesserung der Sortierung der Auslagerungsergebnisse sowie einige zu vermeidende Bereiche aufgeführt.
Die beste Sortierung
- Fügen Sie immer eine Spalte ein, die einen eindeutigen Bezeichner hat (z. B. Spalten mit Tabellen-ID, Spalten mit automatischer Nummerierung, Benutzer-/Kontakt-IDs)
Gute Sortierung
- Schließen Sie mehrere Felder ein, die höchstwahrscheinlich zu eindeutigen Kombinationen führen:
- Vorname + Nachname + E-Mail-Adresse
- Vollständiger Name + E-Mail-Adresse
- E-Mail-Adresse + Firmenname
Schlechte Sortierung
Sortierungen ohne eindeutige Kennungen
Sortierungen mit einzelnen oder mehreren Feldern, die wahrscheinlich keine Eindeutigkeit bieten, wie:
- Status und Zustand
- Auswahlmöglichkeiten oder Ja/Nein
- Namenswerte allein (d.h. nur Nachname, nur Vorname, nur Firmenname)
- Textfelder wie Titel, Beschreibungen, mehrzeiliger Text
- Nicht eindeutige Nummernfelder
Ordnen und Abfragen mehrerer Tabellen
Manchmal werden Daten benötigt, die sich über mehrere Tabellen erstrecken und mit einem Tabellen-JOIN abgefragt werden müssen. In diesen Fällen kann die Reihenfolge für beide Tabellen in die Abfrage einbezogen werden. Stellen Sie sicher, dass Sie mindestens eine Spalte mit einer eindeutigen ID pro Tabelle verwenden, um sicherzustellen, dass das Paging die besten Ergebnisse liefert. Die Abfrage wird in diesen Fällen aufgrund der Einschränkungen der N: 1-Beziehungsstruktur, die zu fehlenden Daten führen können, jedoch auf veraltete Auslagerung herabgestuft, bei der kein Auslagerungs-Cookie zurückgegeben wird.
Siehe auch
Page große Ergebnismengen mit FetchXML
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).