2017-11-15 8 views
1

Ich verwende jdbctemplate.queryForList(String sql, Object... args) Methode, um Ergebnisse von Teradata zu holen. Manchmal habe ich beobachtet, dass diese Methode mehr Zeit in Anspruch nimmt, als wenn ich dieselbe Abfrage auf Teradata Studio ausführe. Ist es wegen der Kompilierung von SQL auf Web-Services-Seite?Preparedstatement Kompilierzeit

Wie eine vorbereitete Anweisung die SQL-Anweisung und die ihr übergebenen Argumente kompiliert & Wie viel Zeit braucht es für die Kompilierung?

Vielen Dank im Voraus.

+0

Was ist der Unterschied? Wie viel Zeit braucht beides. Kannst du mehr erklären ? – smilyface

+0

Ich konnte mindestens ein paar Sekunden Verzögerung durch JDBC-Vorlage – pkgajulapalli

+0

sehen Ein paar Sekunden ist höchstwahrscheinlich nicht mit einer Abfrage zusammen. Sie müssten eine massive Abfrage haben, damit es so lange dauert. Es gibt viele Dinge, die die Zeit beeinflussen können, und Sie werden es schwer haben, diese zu unterscheiden, da es praktisch unmöglich ist, dass beide Parteien die Abfrage in der gleichen Umgebung und Situation ausführen. – Kayaman

Antwort

0

Nach dem doc:
PreparedStatement von Statement abgeleitet .Wenn Sie ein Statement Objekt viele Male ausgeführt werden soll, reduziert es in der Regel Ausführungszeit stattdessen ein PreparedStatement Objekt zu verwenden. Das Hauptmerkmal eines PreparedStatement Objekts ist, dass es im Gegensatz zu einem Statement Objekt eine SQL-Anweisung erhält, wenn es erstellt wird. Der Vorteil ist, dass diese SQL-Anweisung in den meisten Fällen sofort an das DBMS gesendet wird, wo sie kompiliert wird. Daher enthält das Objekt PreparedStatement nicht nur eine SQL-Anweisung, sondern eine SQL-Anweisung, die vorkompiliert wurde. Das heißt, wenn das PreparedStatement ausgeführt wird, kann das DBMS einfach die PreparedStatement SQL-Anweisung ausführen, ohne es zuerst kompilieren zu müssen.

Wenn Sie PreparedStatement Schnittstelle dann sehen, die PreparedStatement in Eclipse und drücken Sie F3 wählen

EDIT:

In reponse dort zu @Kayaman ist kein Unterschied ein PreparedStatement und Statement es kann zwischen Laufen ein Viele Faktoren, die die Kompilierungszeit beeinflussen, hängen von der Umgebung oder der Abfrage ab, wenn es sich um eine massive Abfrage oder um eine kleine Abfrage handelt. Sie müssen wirklich genau hinsehen, warum es zusätzliche Sekunden dauert.

+1

Beantwortet die Frage allerdings nicht wirklich. – Kayaman

+0

@Kayaman Zeit für die Zusammenstellung genommen ist etwas, das von der Umgebung abhängt. Ich denke nicht, dass es eine feste Zeit für den Kompilierungsprozess gibt. Wenn die Abfrage groß oder klein ist, variiert – Lokesh

+1

Ja, das habe ich in ** meinem ** Kommentar gesagt. – Kayaman