Datenbank auf Punktnummer prüfen

Hallo
habe eine Datenbank, in welche Daten eingelesen werden sollen.
Beim Einlesen erfolgt im Moment eine Prüfung nach der Punktnummer in Spalte x, welche nicht doppelt sein darf.

Nun kann man sich vorstellen, das je mehr Daten man einliest, desto länger die Prüfung dauerd, bis alle Daten immer durchsucht wurden.
Das passiert ja bei jedem Punkt, welchen ich einlesen möchte.

Bei 1000 Punkten stört mich das im Moment nicht, es dauerd ca. 15-30sec. Aber wenn ich mal 10000 Punkte hätte, dauerd das mittlerweile 4-5min.

Frage wie kann man das vereinfachen???.

Ich hätte die Idee, alle Punktnummern in einen String zu packen mit Leerzeichen davor danach und diesen abzusuchen.
Dann bin ich aber bei ca. 100 Punkten am Ende, weil mein String voll ist.

zB 1 456 457 458 34567 23456 usw.

Wer weiss ne schnelle komfortable Lösung dafür.

Mfg Werner

Hallo,
also ich würde eine Tabelle in MS SQL Server anlegen und auf die Punkte einen UNIQUE Index setzen (oder als Primary Key). Dann sollte es keine Performanceprobleme geben. In VB lässt sich dann der von ADO kommende Laufzeitfehler abfangen, wenn ein Punkte-Wert schon in der Tabelle vorhanden ist.
Ich arbeite selbst mit Tabellen, die 400.000 Einträge haben und hatte noch nie solche Probleme damit.
„MS SQL Server“ kostenlos downloaden:
http://download.microsoft.com/download/4/a/4/4a425b3…
Gruß,
Michael

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Werner,

habe eine Datenbank, in welche Daten eingelesen werden sollen.
Beim Einlesen erfolgt im Moment eine Prüfung nach der
Punktnummer in Spalte x, welche nicht doppelt sein darf.

Nun kann man sich vorstellen, das je mehr Daten man einliest,
desto länger die Prüfung dauerd, bis alle Daten immer
durchsucht wurden.
Das passiert ja bei jedem Punkt, welchen ich einlesen möchte.

Bei 1000 Punkten stört mich das im Moment nicht, es dauerd ca.
15-30sec. Aber wenn ich mal 10000 Punkte hätte, dauerd das
mittlerweile 4-5min.

Frage wie kann man das vereinfachen???.

Ich hätte die Idee, alle Punktnummern in einen String zu
packen mit Leerzeichen davor danach und diesen abzusuchen.
Dann bin ich aber bei ca. 100 Punkten am Ende, weil mein
String voll ist.

zB 1 456 457 458 34567 23456 usw.

Wer weiss ne schnelle komfortable Lösung dafür.

alle Punkte im selben Feld? Wenn Du das Feld zum Schlüsselfeld machst und doppelte Einträge verbietest, übernimmt die Datenbank das und Du mußt gar nicht suchen. Beim Versuch den Datensatz zu schreiben bekommst du einen Fehler, der Datensatz wird nicht geschreiben.

Wenn die Punkte nicht alle in einem Feld sind, hilft Dir eine Abfrage : 'Select „Dein Wert“ … das geht erheblich schneller als ‚FindFirst…‘.
Eine weitere Möglichkeit wäre eine Sortierung nach den Einträgen in dem zu durchsuchenden Feld und einen Iterationsalgorithmus für die Suche zu verwenden. Dann hast Du das Ergebnis in Sekundenbruchteilen. Noch schneller wird’s nicht gehen. ‚Bequem‘ ist das nicht, dazu brauchst Du einiges an Code. Schnell ist’s aber. :wink:

Gruß, Rainer

Hallo
Hi, bin ja auch kein Profi, daher habe ich noch ständig Probleme.
Jetzt habe ich mir die Datenbank schon aufgebaut, da möchte ich eigentlich auch bei bleiben.
Ich habe doch keine Ahnung, wie man diesen SQL-Server einbinden muß,
wenn ich dafür alles neu machen muss, lasse ich deinen Vorschlag lieber sein.

Mfg Werner

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]