Since the two branches of the UNION produce disjoint sets, do a UNION ALL (#6546)

This obviates the need for a sort/eliminate duplicates step, giving a performance boost in some key distributions with large datasets.
This commit is contained in:
ncabatoff
2019-05-10 13:26:01 -04:00
committed by GitHub
parent bb15317911
commit 1a4314c31b

View File

@@ -157,7 +157,7 @@ func NewPostgreSQLBackend(conf map[string]string, logger log.Logger) (physical.B
get_query: "SELECT value FROM " + quoted_table + " WHERE path = $1 AND key = $2",
delete_query: "DELETE FROM " + quoted_table + " WHERE path = $1 AND key = $2",
list_query: "SELECT key FROM " + quoted_table + " WHERE path = $1" +
" UNION SELECT DISTINCT substring(substr(path, length($1)+1) from '^.*?/') FROM " + quoted_table +
" UNION ALL SELECT DISTINCT substring(substr(path, length($1)+1) from '^.*?/') FROM " + quoted_table +
" WHERE parent_path LIKE $1 || '%'",
haGetLockValueQuery:
// only read non expired data