|
@@ -57,12 +57,18 @@ WebServerService::WebServerService(const WebServerServiceConfig& config)
|
|
|
// page load and workflows are written by hand
|
|
// page load and workflows are written by hand
|
|
|
// users.username/email login looks up by both
|
|
// users.username/email login looks up by both
|
|
|
//
|
|
//
|
|
|
- // executions.startedAt was declared and dropped again: measured, it changed
|
|
|
|
|
- // nothing. Ranges and sorts are not served from an index in 2.9 - a sorted
|
|
|
|
|
- // single row still took 422 ms - and executions are the most written
|
|
|
|
|
- // collection here, so it was pure cost.
|
|
|
|
|
|
|
+ // executions.startedAt was declared, dropped, and declared again. On 2.9 it
|
|
|
|
|
+ // changed nothing: ranges and sorts were not served from an index, and a
|
|
|
|
|
+ // sorted single row still took 422 ms over 10,000 rows. Re-measured on
|
|
|
|
|
+ // 2.10, which fixed that, it makes no measurable difference either - but the
|
|
|
|
|
+ // collection is 1,500 rows now rather than 10,000, having had its orphans
|
|
|
|
|
+ // removed, so the two measurements are not comparable and neither is a
|
|
|
|
|
+ // verdict. It is kept because the field is perfectly selective (every value
|
|
|
|
|
+ // distinct), the planner declines an index it cannot use, and the collection
|
|
|
|
|
+ // will grow again.
|
|
|
for (const auto& [collection, field] : std::initializer_list<std::pair<const char*, const char*>>{
|
|
for (const auto& [collection, field] : std::initializer_list<std::pair<const char*, const char*>>{
|
|
|
{"executions", "workflowId"},
|
|
{"executions", "workflowId"},
|
|
|
|
|
+ {"executions", "startedAt"},
|
|
|
{"workflows", "projectId"},
|
|
{"workflows", "projectId"},
|
|
|
{"users", "username"},
|
|
{"users", "username"},
|
|
|
{"users", "email"},
|
|
{"users", "email"},
|