Merge pull request #279 from coreos/searchintro_optimize

pgsql: Reduce cost of GetNotification by 2.5x
This commit is contained in:
Jimmy Zelinskie 2016-12-04 12:08:50 -05:00 committed by GitHub
commit dab6e492b8

View File

@ -211,22 +211,20 @@ const (
WHERE name = $1` WHERE name = $1`
searchNotificationLayerIntroducingVulnerability = ` searchNotificationLayerIntroducingVulnerability = `
WITH subquery AS ( WITH LDFV AS (
SELECT l.ID, l.name SELECT ldfv.layer_id
FROM Vulnerability_Affects_FeatureVersion vafv, FeatureVersion fv, Layer_diff_FeatureVersion ldfv, Layer l FROM Vulnerability_Affects_FeatureVersion vafv, FeatureVersion fv, Layer_diff_FeatureVersion ldfv
WHERE l.id >= $2 WHERE ldfv.layer_id >= $2
AND vafv.vulnerability_id = $1 AND vafv.vulnerability_id = $1
AND vafv.featureversion_id = fv.id AND vafv.featureversion_id = fv.id
AND ldfv.featureversion_id = fv.id AND ldfv.featureversion_id = fv.id
AND ldfv.modification = 'add' AND ldfv.modification = 'add'
AND ldfv.layer_id = l.id ORDER BY ldfv.ID
ORDER BY l.ID )
) SELECT l.id, l.name
FROM LDFV, Layer l
SELECT * WHERE LDFV.layer_id = l.id
FROM subquery LIMIT $3`
LIMIT $3;
`
// complex_test.go // complex_test.go
searchComplexTestFeatureVersionAffects = ` searchComplexTestFeatureVersionAffects = `