Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - Schnelle überprüfung des Primärschlüssels


thas11 - Mo 21.03.11 15:24
Titel: Schnelle überprüfung des Primärschlüssels
Hallo!

Ich habe Daten in einer Access Datenbank abgelegt und wenn ich neu Einträge habe möchte ich diese hinzufügen falls noch nicht in der DB vorhanden
Zuerst dachte ich mir ich fange einfach die Exception ab welche fliegt wenn dadurch eine Primärschlüsselverletzung entsteht...
Aber das war die denkbar schlechteste Idee, da die Exceptions enorm PErformance fressen..

Nun wollte ich fragen was die performanteste Methode ist um abzufragen ob schon eine Row mit diesem PRimärschlüssel vorhanden ist?

Danke & lg,
Wolfi


jasocul - Mo 21.03.11 15:49

Ein geschicktes SLQ-Statement sollte helfen.
Beispiel:

SQL-Anweisung
1:
2:
3:
select count(*) Anzahl
from Tabelle
where Primärschlüsselfeld = DeinPrimärschlüssel

Anzahl ist dann entweder 1 oder 0. Ist es 1, dann existiert der schon.

Wenn du natürlich in kurzer Zeit große Mengen an Daten einpflegen willst, kann man auch anders vorgehen. Das hängt aber zum Beispiel auch von der Datenmenge ab, die in der Tabelle steht.

Man könnte zum Beispiel alle Primärschlüssel in eine Liste innerhalb des Programms einlesen und nur in dieser Liste prüfen, ob der Schlüssel schon existiert.

Was davon jetzt die performantere Lösung ist, kann man nicht ohne weiteres sagen. Möglicherweise ist beides nicht optimal. Das hängt von mehreren Faktoren ab.


SakeSushi - Mo 21.03.11 20:10

Falls du mit dem Entity Farmework zu tun hast: Die ObjectContext Klasse stellt die Methode TryGetObjectByKey [http://msdn.microsoft.com/de-de/library/bb738728.aspx] zur verfügung.