Ich habe kürzlich mit Datenbanken gearbeitet und zuvor habe ich eigenständige Komponenten entwickelt, die keine Datenbanken verwenden. Mit all der DB-Arbeit habe ich ein paar Fragen, die aufkamen. Warum ist eine Datenbankabfrage schneller als ein Programmierdatenabruf aus einer Datei?Datenabruf - Datenbank VS Programmiersprache
meine Frage weiter zu erarbeiten -
Angenommen ich eine Tabelle haben Mitarbeiter genannt, mit Felder Name, ID, DOB, E-Mail und Sex. Aus Gründen der Einfachheit gehen wir auch davon aus, dass es sich um Strings mit fester Länge handelt und sie keine Indizes, Primärschlüssel oder andere Einschränkungen haben.
Stellen Sie sich vor, wir haben 1 Million Datenzeilen in der Tabelle. Am Ende des Tages wird diese Tabelle irgendwo auf der Festplatte gespeichert. Wenn ich eine Abfrage schreibe Wählen Sie Name, ID von Mitarbeiter, wo DOB = "12.12.1985", das DBMS nimmt die Daten aus der Datei auf, verarbeitet sie, filtert sie und gibt mir ein Ergebnis, das eine Teilmenge der 1 Million ist Zeilen von Daten.
Nun nehme ich an, ich speichere die gleichen 1 Million Zeilen in einer flachen Datei, wobei jedes Feld der Einfachheit halber eine Zeichenfolge fester Länge ist. Die Daten sind in einer Datei auf der Festplatte verfügbar. Wenn ich ein Programm in C++ oder C oder C# oder Java schreibe und die gleiche Aufgabe mache, den Namen und die ID zu finden, wo DOB = "12/12/1985", lese ich die Datei Datensatz für Datensatz und überprüfe für jede Zeile von Daten wenn der DOB = "12/12/1985", wenn es übereinstimmt, dann speichere ich die Zeile dem Benutzer.
Diese Vorgehensweise ist im Vergleich zur Geschwindigkeit, mit der eine SQL-Abfrage die Ergebnisse zurückgibt, zu langsam.
Ich nehme an, das DBMS ist auch in einer Programmiersprache geschrieben und es gibt auch einen zusätzlichen Aufwand für die Analyse der Abfrage und was nicht.
Was passiert also in einem DBMS, das Daten schneller abruft als über eine Programmiersprache?
Wenn diese Frage in diesem Forum unpassend ist, löschen Sie bitte, aber stellen Sie mir einige Hinweise zur Verfügung, wo ich eine Antwort finden kann.
Ich benutze SQL Server, wenn das hilft.
Caching, Optimierer sind die zwei Dinge, die Db schneller macht. Wenn Sie wissen, in Programmiersprache zu implementieren, dann könnte es die beste sein .. – SenthilPrabhu