Methode Find bei Datatables

02/10/2009 - 21:56 von Stephan, MZ | Report spam
Hallo,

in meiner Anwendung wird eine Tabelle, bestehend aus ca. 50000 Datensàtzen
mit zwei Schlüsselspalten verwendet. Derzeit verwende ich die Select-Methode
mit Angabe des Filters. Um meine Suche zu optimieren und ein schnelleres
Ergebnis zu erhalten, würde ich gerne die Find-Methode anwenden über
Primàrschlüssel.

Kann mir jemand erlàutern, wie Find intern arbeitet, also wird innerhalb der
Find-Methode mit dem Binary Search-Algorithmus gesucht oder wird linear vom
ersten bis zum Treffersatz durchsucht? Welches Suchverfahren nutzt die
Select-Methode?
Gibt es im Dataset auch so etwas wie einen Index, auf dem bei der Suche
zurückgegriffen wird?

Gruss
Stephan
 

Lesen sie die antworten

#1 Elmar Boye
03/10/2009 - 11:12 | Warnen spam
Hallo Stephan,

Stephan schrieb:
in meiner Anwendung wird eine Tabelle, bestehend aus ca. 50000 Datensàtzen
mit zwei Schlüsselspalten verwendet. Derzeit verwende ich die Select-Methode
mit Angabe des Filters. Um meine Suche zu optimieren und ein schnelleres
Ergebnis zu erhalten, würde ich gerne die Find-Methode anwenden über
Primàrschlüssel.

Kann mir jemand erlàutern, wie Find intern arbeitet, also wird innerhalb der
Find-Methode mit dem Binary Search-Algorithmus gesucht oder wird linear vom
ersten bis zum Treffersatz durchsucht? Welches Suchverfahren nutzt die
Select-Methode?
Gibt es im Dataset auch so etwas wie einen Index, auf dem bei der Suche
zurückgegriffen wird?



Die DataTable verwendet intern schon Indizes. Dabei wird eine Variante des
Red-Black-Trees verwendet, siehe <URL:http://en.wikipedia.org/wiki/Red-black_tree>

Ein Index wird zunàchst nur für Primàr- und Fremdschlüssel erstellt.
Die können auch von Select genutzt werden, sofern die abgefragten Spalten passen.

Für die DataView wiederum wird ein eigener Index über die gefilterten
Daten in der Sortierung der DataView erstellt, um die Änderungsnachverfolgung
zu implementieren.

Die DataView.Find Methode wiederum greift über den Index zurück,
und liefert den Index entsprechend der Sortierung.

Die beste Leistung solltest Du somit erzielen, wenn Du die DataView
entsprechend Deiner beiden Schlüsselspalten sortierst.

Gruß Elmar

Ähnliche fragen