Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
MSSQL DB mit über 3.5 Mio Datensätzen
david.ka
myCSharp.de - Member



Dabei seit:
Beiträge: 349
Herkunft: Baden(-Württemberg)

Themenstarter:

MSSQL DB mit über 3.5 Mio Datensätzen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
nitronic
myCSharp.de - Member

Avatar #avatar-1597.jpg


Dabei seit:
Beiträge: 354
Herkunft: Österreich

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
david.ka
myCSharp.de - Member



Dabei seit:
Beiträge: 349
Herkunft: Baden(-Württemberg)

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3755
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 832

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Ergänzung zu Yellow's Post

Verwendest Du einen PrimaryKey ?
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
david.ka
myCSharp.de - Member



Dabei seit:
Beiträge: 349
Herkunft: Baden(-Württemberg)

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
Quallo
myCSharp.de - Member



Dabei seit:
Beiträge: 994
Herkunft: Nähe Bremen

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Tom
myCSharp.de - Member



Dabei seit:
Beiträge: 432
Herkunft: Home is where my notebook is

beantworten | zitieren | melden

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

Gruß,
Tom
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

Vor allem aber erstmal PKs definieren...
private Nachricht | Beiträge des Benutzers
CB.NET
myCSharp.de - Member

Avatar #avatar-2838.gif


Dabei seit:
Beiträge: 729
Herkunft: bei Berlin

beantworten | zitieren | melden

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

ich staune , daß es noch DBs ohne PK gibt ...
--------------------------------
DotNetGerman Bloggers
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Zitat
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...
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
david.ka
myCSharp.de - Member



Dabei seit:
Beiträge: 349
Herkunft: Baden(-Württemberg)

Themenstarter:

beantworten | zitieren | melden

boah, DANKE, geht jetzt ab wie ein rotes Mofa
Programming is like sex: One mistake and
you have to support it your lifetime
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Zitat
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...
private Nachricht | Beiträge des Benutzers
david.ka
myCSharp.de - Member



Dabei seit:
Beiträge: 349
Herkunft: Baden(-Württemberg)

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Programmierhans
myCSharp.de - Experte

Avatar #avatar-1651.gif


Dabei seit:
Beiträge: 4318
Herkunft: Zentralschweiz

beantworten | zitieren | melden

http://de.wikipedia.org/wiki/Datenbankindex
http://de.wikipedia.org/wiki/Schl%C3%BCssel_%28Datenbank%29
Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...
private Nachricht | Beiträge des Benutzers
david.ka
myCSharp.de - Member



Dabei seit:
Beiträge: 349
Herkunft: Baden(-Württemberg)

Themenstarter:

beantworten | zitieren | melden

DANKE
Programming is like sex: One mistake and
you have to support it your lifetime
private Nachricht | Beiträge des Benutzers