diff --git a/db/migrate/20240423082718_add_index_to_user_add_on_assignments_add_on_purchase_id_and_id.rb b/db/migrate/20240423082718_add_index_to_user_add_on_assignments_add_on_purchase_id_and_id.rb
new file mode 100644
index 0000000000000000000000000000000000000000..e06d62ba37dcfa86544c143b04118998b1ddd33e
--- /dev/null
+++ b/db/migrate/20240423082718_add_index_to_user_add_on_assignments_add_on_purchase_id_and_id.rb
@@ -0,0 +1,17 @@
+# frozen_string_literal: true
+
+class AddIndexToUserAddOnAssignmentsAddOnPurchaseIdAndId < Gitlab::Database::Migration[2.2]
+  milestone '17.0'
+
+  disable_ddl_transaction!
+
+  INDEX_NAME = 'idx_user_add_on_assignments_on_add_on_purchase_id_and_id'
+
+  def up
+    add_concurrent_index :subscription_user_add_on_assignments, [:add_on_purchase_id, :id], name: INDEX_NAME
+  end
+
+  def down
+    remove_concurrent_index_by_name :subscription_user_add_on_assignments, INDEX_NAME
+  end
+end
diff --git a/db/schema_migrations/20240423082718 b/db/schema_migrations/20240423082718
new file mode 100644
index 0000000000000000000000000000000000000000..9f324d78baf225b39a9ce00506b293056b0d6775
--- /dev/null
+++ b/db/schema_migrations/20240423082718
@@ -0,0 +1 @@
+eed2d24b340c83ba299416d7b47f936294fe9d51de061874a2f0664201d6cdc2
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index 1e84c396bb0c8b3fec76d69047d82ee60d10339e..42e593f11994ab04da5c6a0620c650454297c04f 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -24194,6 +24194,8 @@ CREATE INDEX idx_test_reports_on_issue_id_created_at_and_id ON requirements_mana
 
 CREATE UNIQUE INDEX idx_uniq_analytics_dashboards_pointers_on_project_id ON analytics_dashboards_pointers USING btree (project_id);
 
+CREATE INDEX idx_user_add_on_assignments_on_add_on_purchase_id_and_id ON subscription_user_add_on_assignments USING btree (add_on_purchase_id, id);
+
 CREATE INDEX idx_user_credit_card_validations_on_holder_name_hash ON user_credit_card_validations USING btree (holder_name_hash);
 
 CREATE INDEX idx_user_credit_card_validations_on_similar_to_meta_data ON user_credit_card_validations USING btree (expiration_date_hash, last_digits_hash, network_hash, credit_card_validated_at);