У меня есть следующий SQL-запрос:
select `sr_roleName`, `sr_id` from `db_security_role` where `sr_roleName` = 'admin'
Он генерируется из следующего кода Slick:
RoleTable.filter(_.name === roleName).result.head
Итак, это кажется довольно простым (на самом деле самое простое, что у вас может быть, верно?). Теперь давайте посмотрим на следующие результаты (журналы ниже):
[debug] s.c.QueryCompilerBenchmark - ------------------- Phase: Time ---------
[debug] s.c.QueryCompilerBenchmark - assignUniqueSymbols: 0.257579 ms
[debug] s.c.QueryCompilerBenchmark - inferTypes: 0.774230 ms
[debug] s.c.QueryCompilerBenchmark - expandTables: 18.949290 ms
[debug] s.c.QueryCompilerBenchmark - forceOuterBinds: 3.438698 ms
[debug] s.c.QueryCompilerBenchmark - removeMappedTypes: 2.760705 ms
[debug] s.c.QueryCompilerBenchmark - expandSums: 0.702326 ms
[debug] s.c.QueryCompilerBenchmark - emulateOuterJoins: 1.025963 ms
[debug] s.c.QueryCompilerBenchmark - expandRecords: 1.022323 ms
[debug] s.c.QueryCompilerBenchmark - flattenProjections: 10.691557 ms
[debug] s.c.QueryCompilerBenchmark - rewriteJoins: 0.790561 ms
[debug] s.c.QueryCompilerBenchmark - verifySymbols: 4.421257 ms
[debug] s.c.QueryCompilerBenchmark - relabelUnions: 1.511849 ms
[debug] s.c.QueryCompilerBenchmark - createAggregates: 0.612787 ms
[debug] s.c.QueryCompilerBenchmark - resolveZipJoins: 0.723972 ms
[debug] s.c.QueryCompilerBenchmark - pruneProjections: 4.261886 ms
[debug] s.c.QueryCompilerBenchmark - rewriteDistinct: 2.408857 ms
[debug] s.c.QueryCompilerBenchmark - createResultSetMapping: 2.745822 ms
[debug] s.c.QueryCompilerBenchmark - hoistClientOps: 7.755399 ms
[debug] s.c.QueryCompilerBenchmark - reorderOperations: 1.650360 ms
[debug] s.c.QueryCompilerBenchmark - mergeToComprehensions: 27.408578 ms
[debug] s.c.QueryCompilerBenchmark - optimizeScalar: 1.784032 ms
[debug] s.c.QueryCompilerBenchmark - removeFieldNames: 13.811206 ms
[debug] s.c.QueryCompilerBenchmark - codeGen: 20.328294 ms
[debug] s.c.QueryCompilerBenchmark - TOTAL: 129.837531 ms
[debug] s.j.J.statement - Preparing statement: select `sr_roleName`, `sr_id` from `db_security_role` where `sr_roleName` = 'admin'
[debug] s.j.J.benchmark - Execution of prepared statement took 425µs
Как вы можете видеть, фактические затраты на выполнение запроса (занимает время) около 425 мкс. Возможно - выполняется на локальной машине/локальной базе данных. Что, однако, для меня крайне странно, так это то, что все время подготовки запроса в сумме стоит 129,837531 мс (что в 300 раз превышает время фактического выполнения запроса).
Итак, в основном мой вопрос:
это типичная характеристика производительности Slick?
есть ли что-то очевидное, что я могу делать неправильно?
спасибо