2016-11-08 2 views
0

Meine Frage ist, wann sollten wir uns sorgen, wie viele Daten fragen wir für eine bestimmte Aufgabe von SQL-Datenbank?Optimieren von Datenbankabfragen

Lets sagen, ich habe PostgreSql-Datenbank. Ich habe eine Produkttabelle und Produkt hat 20 Felder.

In einem System benötigen einige Plätze eigentlich nur Produkt-ID, Name und Preis. Einige Leute argumentieren, dass ich nur diese 3 Felder aus der Datenbank bitten sollte, um effizient zu sein. Aber ich glaube, es ist viel einfacher für Entwickler, immer productService.getProduct(id) zu tun und dann die Felder auszuwählen, die sie benötigen, als eine separate Klasse oder Abfrage für diese spezifischen Felder zu erstellen.

Ist es wirklich wichtig - für die Geschwindigkeit der Abfrage - wenn ich 3 oder 20 Felder frage? Wie viel Last könnte es erhöhen?

(Ich bin Java-Entwickler mit der Mentalität der „Early-Optimierung ist die Wurzel aller Übel“.)

+1

Wenn Sie nur nach 3 Feldern fragen, erhalten Sie nur 3 Felder, wenn N, also weniger Daten vom Datenbankserver zur verbundenen App übertragen werden müssen. Seine einfache – RiggsFolly

+0

der Hauptunterschied wird im Transport zwischen Ihrem Client und Ihrem db + Serialisierung/Deserialisierung sein –

+0

Ich fürchte, es ist zu breit/in erster Linie auf der Grundlage von Meinungen –

Antwort

1

Wie bei alle Optimierung, wenn es darauf ankommt. Der Profiler und andere Werkzeuge (zB postgres 'EXPLAIN ANALYZE) werden Sie wissen lassen.

Die tatsächlichen Mechanismen hängen von vielen Dingen ab; die verwendete Datenbank, Tabelle/Schema, Tablespace-Einstellungen usw. usw., so dass es unmöglich ist, eine definitive Antwort zu geben, aber da die Menge der verschobenen Daten unterschiedlich ist, wird es natürlich einen Unterschied machen, ob Sie 100.000 Reihen von 10 bewegen Spalten oder 100.000 Zeilen mit 3 Spalten.

Die tatsächliche Abfrage möglicherweise keinen signifikanten Unterschied, wenn die gleiche Anzahl von Seiten von der Festplatte gelesen wird, aber die Speicher- und Netzwerknutzung wird natürlich abweichen.

Glücklicherweise können Sie Code und Abfragen so umgestalten, dass weniger Daten ausgewählt werden, wenn die ursprüngliche Abfrage zu einem Engpass wird.

Verwandte Themen