Vorrei sapere quale delle seguenti query sarebbe la più efficiente per ottenere un conteggio di righe su un tavolo, quindi sto provando a stampare le istruzioni di selezione. So che è possibile aggiungere .selectStatement
a Queryable ma non so se questo mi dice la verità completa perché dovrò rimuovere il codice di generazione dei risultati, ad es. .list.length
e sostituirlo con .selectStatement
. Slick probabilmente raccoglie che si sta cercando per la lunghezza e ottimizza ulteriormente, quindi voglio vedere la dichiarazione prescelta per l'intera query, tra cui il codice SQL che verrà generato a causa della .list.length
, o .count).first
Come si stampano le istruzioni select per le seguenti query Slick?
Query(MyTable).list.length
(for{mt <- MyTable} yield mt).list.length
(for{mt <- MyTable} yield mt.count).first
Se si è su * nix "tail -f /path/to/query.log" dovrebbe fare il trucco, no? – virtualeyes
Grazie, sto usando H2 nel foglio di lavoro, ma giocherò con esso. – Jack
@virtualeyes, che sembra essere la migliore (e unica) soluzione. Per i fogli di lavoro e H2 è necessario modificare il livello di traccia nell'URL del database, ad es. implicit val session = Database.forURL ("jdbc: h2: mem: test1; TRACE_LEVEL_FILE = 4", driver = "org.h2.Driver"). createSession(). Si prega di dare il vostro suggerimento (gentilmente menzionare fogli di lavoro) come risposta. – Jack