eeb13a02ba
`searchNotificationAvailable` never effectively use any indexes because: - `notified_at < $1`, where $1 is a recent timestamp, returns the majority of the table and therefore it is cheaper for PostgreSQL to use a sequential scan on the table. - there is no index for `deleted_at IS NULL`. However, when Clair has been running for long enough, the grand majority of rows (99%+) are expected to have a non-NULL `deleted_at` field. This commit adds a new index on this very field in order to fetch the remaining 1% in the blink of an eye. In other words, instead of realizing a full table scan for each `searchNotificationAvailable` query, we'll use the small branch of a new index, reducing the total cost from over 30k to a mere 150 on a Clair database that has already managed more than 1 000 000 notifications. |
||
---|---|---|
.. | ||
migrations | ||
testdata | ||
complex_test.go | ||
feature_test.go | ||
feature.go | ||
keyvalue_test.go | ||
keyvalue.go | ||
layer_test.go | ||
layer.go | ||
lock_test.go | ||
lock.go | ||
namespace_test.go | ||
namespace.go | ||
notification_test.go | ||
notification.go | ||
pgsql_test.go | ||
pgsql.go | ||
queries.go | ||
vulnerability_test.go | ||
vulnerability.go |