Ich möchte herausfinden, welche der folgenden Abfragen am effizientesten wäre, um eine Zeilenanzahl für eine Tabelle zu erhalten, also versuche ich, die Select-Anweisungen auszudrucken. Ich weiß, dass Sie .selectStatement
zu einem Queryable hinzufügen können, aber nicht wissen, ob dies mir die vollständige Wahrheit sagt, weil ich den Ergebnis erzeugenden Code entfernen muss, z. .list.length
und ersetzen Sie es durch .selectStatement
. Slick wahrscheinlich aufgreift, dass Sie für die Länge suchen und weiter optimiert, so möchte ich die select-Anweisung für die gesamte Abfrage, um zu sehen, einschließlich der SQL, die aufgrund der .list.length
erzeugt wird, oder .count).first
Wie drucken Sie die Select-Anweisungen für die folgenden Slick-Abfragen?
Query(MyTable).list.length
(for{mt <- MyTable} yield mt).list.length
(for{mt <- MyTable} yield mt.count).first
Wenn Sie auf * nix sind "tail -f /path/to/query.log" sollte den Trick tun, nicht? – virtualeyes
Danke, ich benutze H2 im Arbeitsblatt, werde aber damit spielen. – Jack
@virtualeyes, das scheint die beste (und einzige) Lösung zu sein. Für die Arbeitsblätter und H2 müssen Sie die Trace-Ebene in der Datenbank-URL ändern, z. implizite val session = Database.forURL ("jdbc: h2: mem: test1; TRACE_LEVEL_FILE = 4", treiber = "org.h2.Driver"). createSession(). Bitte geben Sie Ihren Vorschlag (Arbeitsblätter) als Antwort an. – Jack