Frage

Ich habe eine große Tabelle in einer MySQL-Datenbank (6 Millionen Datensätze). Wenn ich die Tabelle verknüpfen, kann ich es öffnen ganz gut - es scheint, wie Zugang die Aufzeichnungen verlangt nach Bedarf. Wenn ich jedoch eine Pass-Through-Abfrage verwenden, wie es scheint, den Zugang der gesamten Tabelle anfordert, bevor es geöffnet wird. Dies ist langsam genug, um auf meinem normalen Tabellen (200.000) Aufzeichnungen, aber die großen sind unmöglich. Ich möchte einen Pass-Through verwenden zu können SQL-Anweisungen verwenden, aber ich brauche, um es schneller zu machen. Gibt es eine Möglichkeit, dies zu tun? Dank!

EDIT: Hier ist die Abfrage; Sie können nicht viel einfacher als diese. SELECT * FROM Traffic12

War es hilfreich?

Lösung

Ihre Anfrage wird gefragt für die gesamte Tabelle. Zugang tut genau das, was Sie sagen, es zu tun. Das einzige Mal zu verwenden, ein Pass-Through-Abfrage, wenn Sie wollen, dass die WHERE-Klausel (die Filterung) auf dem Server ausgeführt werden, oder die Verbindungen auf dem Server vorgenommen werden, oder wenn Sie die Vorteile der serverseitigen Funktionen einnehmen (wie zB ein UDF) oder, wenn Sie wollen „Hinting“ hinzufügen, dass der back-End-Server wird es verstehen.

Die scheinbare Leistung Nutzen Sie bemerken, wenn nicht eine p-t Abfrage kommt aus Access nur eine bestimmte Anzahl von Zeilen zu einem Zeitpunkt, zu holen; aber Sie umgehen diese Optimierung von dem Paging-Algorithmus, wenn Sie Pass-Thru verwenden.

Wenn die Filterung erfolgt serverseitige einem Pass-Through-Abfrage kann viel mehr geizig sein mit der Bandbreite als nicht-p-t und kann daher große Performance-Gewinne in Bezug auf Nicht-Pass-thru ergeben. Oder manchmal das Back-End ist eine gigantische 4-CPU-Maschine mit immenser RAM beträgt und kann durch die großen Indizes in einem Flash-Churn. Sie haben, um die Situation zu bewerten, um zu sehen, was Ansatz besser, alle Faktoren in Betracht nimmt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top