You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Sep 15, 2023. It is now read-only.
JdbcValueSetDataServiceImpl#deleteOldValueSets() uses N + 1 to delete data. This could be done in a single query / database round trip, for example using a window function.
DELETEFROM t_value_set_data
WHERE pk_value_set_data_id IN (
SELECT pk_value_set_data_id
FROM (SELECT pk_value_set_data_id,
row_number() OVER (PARTITION BY value_set_id ORDER BY created_at DESC) as row_number
FROM t_value_set_data) as partitioned_value_set_data
WHERE row_number > :max_history);
If you prefer a CTE
WITH partitioned_value_set_data(pk_value_set_data_id, row_number) AS (
SELECT pk_value_set_data_id,
row_number() OVER (PARTITION BY value_set_id ORDER BY created_at DESC) AS row_number
FROM t_value_set_data)
DELETEFROM t_value_set_data
WHERE pk_value_set_data_id IN (SELECT pk_value_set_data_id
FROM partitioned_value_set_data
WHERE row_number > :max_history);
The text was updated successfully, but these errors were encountered:
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
JdbcValueSetDataServiceImpl#deleteOldValueSets()
uses N + 1 to delete data. This could be done in a single query / database round trip, for example using a window function.If you prefer a CTE
The text was updated successfully, but these errors were encountered: