Laden...

MSSQL DB mit über 3.5 Mio Datensätzen

Erstellt von david.ka vor 17 Jahren Letzter Beitrag vor 17 Jahren 3.111 Views
D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 17 Jahren
MSSQL DB mit über 3.5 Mio Datensätzen

Hallo Leute,
ich hoffe ihr könnt mir mal wieder weiterhelfen.
ich habe eine MSSQL 2000 Datenbank. in einer Tabelle sind momentan ca. 3,6 Mio Datensätze.
sie ist wie folgt aufgebaut:

RepID; RepString

RepID ist eine fortlaufende ID Nummer, und in RepString befindet sich ein SQL Statement.

ich möchte mir nun eine Funktion in C# (.Net 1.1) schreiben, welche jedes einzelne SQL Statement feuert und dieses anschließend löscht. das ist an sich gar kein Problem. nur beim löschen tut sich das Programm, bzw. der SQL Server sehr schwer. es kommt dann zu einem Timeout. wie muss so eine Funktion aussehen, wenn man mit so "riesigen" Datenbanken arbeitet?

Danke schon mal im Voraus,
David

Programming is like sex: One mistake and
you have to support it your lifetime

354 Beiträge seit 2004
vor 17 Jahren

Wie sieht denn dein jetziger Code aus? Wie führst du den Lösch-Vorgang durch?

.NET GUI - Die Community für grafische Oberflächen unter .NET
Jetzt kostenlos besorgen: .NET BlogBook
Norbert Eder
DasBackup

D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 17 Jahren

ich feuere einfach ein delete SQL Statement ab. delete from RepTable where RepID = XXX

auch wenn ich die ganze tabelle in ein Datatable packe, tut sich das Programm sehr schwer.

Programming is like sex: One mistake and
you have to support it your lifetime

3.825 Beiträge seit 2006
vor 17 Jahren

Löschen ist wohl eine der Operationen die am längsten dauert.

Füge doch eine Spalte "Deleted" hinzu und setze die auf True.

Wenn Du alles abgearbeitet hast dann kannst Du alle Datensätze auf einmal löschen, das geht sicher schneller.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

476 Beiträge seit 2004
vor 17 Jahren

hallo david.ka,

Verwendest du Indizes auf den Schlüsselfeldern?
Existieren Beziehungen zu anderen Tabellen?
Hast Du bereits versucht den TimeOut höher zu setzen?
Arbeitest du mit Transaktionen?
Verwendest du einen direkten DeleteCommand, oder arbeitest du über DataTable?

-yellow

Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de

4.221 Beiträge seit 2005
vor 17 Jahren

Ergänzung zu Yellow's Post

Verwendest Du einen PrimaryKey ?

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 17 Jahren

hallo,
nein nichts von dem. nichteinmal nen primary key.
timeout habe ich auch nicht höher gesetzt. macht aber keinen sinn, ich meine wenn es bei jedem löschen über 60sec dauert...
arbeite mit datatables

Programming is like sex: One mistake and
you have to support it your lifetime

4.221 Beiträge seit 2005
vor 17 Jahren

Dann mach mal schnell einen Key rein und dann sollte das Teil fliegen...

Was sind schon ein paar Millionen Records

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

Q
992 Beiträge seit 2005
vor 17 Jahren

Wenn das nicht ein absolut klassischer Fall für eine Stored Procedure ist. Du willst doch nicht 3,6 Millionen Select + Delete + Statement aus Tabelle machen, oder? Das sind 10 Millionen Statements.

Stoß über C# eine Stored Procedure an und schreibe deren Output in eine temporäre Tabelle(die du dann via C# abfragst), wenn du Rückmeldung brauchst.
Sollte um Potenzen schneller sein, zumindest bei einfachen Statements. Außerdem kannst du es dann von dem C# Programm unabhängig aufrufen!

Grüße, Christoph

T
433 Beiträge seit 2006
vor 17 Jahren

Wie Programmierhans schon geschrieben hat, nutze Indizes und das teil fluppt.

Gruß,
Tom

S
8.746 Beiträge seit 2005
vor 17 Jahren

Vor allem aber erstmal PKs definieren...

726 Beiträge seit 2003
vor 17 Jahren

Original von svenson
Vor allem aber erstmal PKs definieren...

ich staune , daß es noch DBs ohne PK gibt ...

4.221 Beiträge seit 2005
vor 17 Jahren

Original von CB.NET
ich staune , daß es noch DBs ohne PK gibt ...

Man kann auch mit dem Auto mit angezogener Handbremse rumfahren

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

S
8.746 Beiträge seit 2005
vor 17 Jahren

Schlimmer, mit Handbremse (Index) und ohne auf die Strasse zu gucken (PK/FK). Du merkst nichtmal, dass du dich verfahren hast (inkonsistenten DS einfügst).

DB im Blindflug.

D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 17 Jahren

boah, DANKE, geht jetzt ab wie ein rotes Mofa 🙂

Programming is like sex: One mistake and
you have to support it your lifetime

4.221 Beiträge seit 2005
vor 17 Jahren

Original von david.ka
boah, DANKE, geht jetzt ab wie ein rotes Mofa 🙂

Aber nun lass dich bloss nicht von den Bullen erwischen mit Deinem frisierten Mofa 😁

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 17 Jahren

dafür bin ich jetzt zu schnell.

kann mir aber jemand was zu den Indizies erzählen? was machen die?
warum ist der PK so wichtig dafür?

Programming is like sex: One mistake and
you have to support it your lifetime

4.221 Beiträge seit 2005
vor 17 Jahren

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

D
david.ka Themenstarter:in
343 Beiträge seit 2005
vor 17 Jahren

DANKE 🙂

Programming is like sex: One mistake and
you have to support it your lifetime