Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Moinsen!

Ich verwende folgenden C# und SQL Code um einen Datenbank-Eintrag zu erledigen.

            string sql = "insert into runde (akt_rundenzeit, akt_runde, zeitstempel, Event_nr, Team_id) values (@neueRundenzeit,@neueRunde,@neuerZeitstempel,@Event_nr,@Team_id)";


            using (MySqlCommand cmd = new MySqlCommand(sql, connection))

            {

                cmd.Parameters.AddWithValue("@neueRundenzeit", neueRundenzeit);

                cmd.Parameters.AddWithValue("@neueRunde", neueRunde);

                cmd.Parameters.AddWithValue("@neuerZeitstempel", neuerZeitstempel);

                cmd.Parameters.AddWithValue("@Event_nr", eventNr);

                cmd.Parameters.AddWithValue("@Team_id", team_nr);

                cmd.ExecuteNonQuery();


            }

Das merkwürdige ist, das dieser Eintrag bei bereits 10.000 vorhandenen Datensätzen in der Tabelle Runde 159 Millisekunden dauert.

Gibt es Möglichkeiten, dieses zu beschleunigen? Eine komplexe Select-Anweisung, die unter anderem auf diese Tabelle zugreift, und mit eineren Tabellen verknüpft wird, brauch gerade einmal 11 Millisekunden, um einen entsprechenden Datensatz herauszufiltern.

Geschrieben

Sorry, aber wenn ich hier eine für mich ernst gemeinte Frage stelle, aus der eigentlich eindeutig hervorgehen sollte, dass man den Unterschied zwischen insert und select kennt, fühle ich mich mit einer solchen Frage leicht auf den Arm genommen.

Ich frage mich nur, warum die Zeit für das Einfügen eines einfachen Datensatzes in eine Tabelle so hoch ist und ob man dieses irgendwie minimieren kann.

Ein Selektieren der Daten würde laut meiner Logik viel mehr Aufwand an der Datenbank bedeuten. Da hier in den entsprechenden Daten gefiltert wird, um Einen entsprechenden Datensatz auszuwählen.

Geschrieben

Hast du das gleiche Verhalten, wenn du das SQL direkt auf die DB ausführst statt per Programm?

Laufen auf der DB irgendwelche insert-Trigger?

Melden die DB-Logs irgendwelche Auffälligkeiten?

Geschrieben (bearbeitet)
Sorry, aber wenn ich hier eine für mich ernst gemeinte Frage stelle, aus der eigentlich eindeutig hervorgehen sollte, dass man den Unterschied zwischen insert und select kennt, fühle ich mich mit einer solchen Frage leicht auf den Arm genommen.

Ich frage mich nur, warum die Zeit für das Einfügen eines einfachen Datensatzes in eine Tabelle so hoch ist und ob man dieses irgendwie minimieren kann.

Ein Selektieren der Daten würde laut meiner Logik viel mehr Aufwand an der Datenbank bedeuten. Da hier in den entsprechenden Daten gefiltert wird, um Einen entsprechenden Datensatz auszuwählen.

Deine Antwort zeigt, dass du es eben nicht verstanden hast. Grundsätzlich ist lesen schneller als schreiben. Je nach Datenbankschema und Optimierung sind hier sehr sehr deutliche Unterschiede möglich, was man beispielsweise durch CQRS auf die Spitze treiben kann. 159ms ist nicht wahnsinnig schnell, aber auch nicht übermäßig langsam. Um die Frage überhaupt beantworten zu können müsste man erstmal wissen wie und unter welchen Voraussetzungen du das ganze betreibst. Aber zu sagen mein Insert ist zu langsam, weil mein Select schnell ist, ist ungefähr so wie zu fragen - meine Reifen sind platt, warum ist mein Auto grün.

Bearbeitet von SilentDemise
  • 3 Monate später...
Geschrieben
vor 19 Minuten, feuerjinn sagte:

Gilt ebenfalls nur beim Suchen und nicht beim Schreiben.

Die Geschwindigkeit einer insert-Anweisung hängt im Wesentlichen von der Anzahl der Indizes auf der Tabelle ab. Je mehr Indizes, desto langsamer die Ausführung. Da diese nach jedem insert aktualisiert werden.

Jedoch bringen diese Performance beim Lesen, dass ist richtig.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...