diff --git a/db/post_migrate/20240722074340_remove_index_vulnerability_occurrences_on_primary_identifier_id.rb b/db/post_migrate/20240722074340_remove_index_vulnerability_occurrences_on_primary_identifier_id.rb
new file mode 100644
index 0000000000000000000000000000000000000000..c8fd9c2787987384be519d27eb5f6153d9a035dd
--- /dev/null
+++ b/db/post_migrate/20240722074340_remove_index_vulnerability_occurrences_on_primary_identifier_id.rb
@@ -0,0 +1,19 @@
+# frozen_string_literal: true
+
+class RemoveIndexVulnerabilityOccurrencesOnPrimaryIdentifierId < Gitlab::Database::Migration[2.2]
+  disable_ddl_transaction!
+  milestone '17.3'
+
+  INDEX_NAME = 'index_vulnerability_occurrences_on_primary_identifier_id'
+  TABLE_NAME = :vulnerability_occurrences
+
+  def up
+    # This index was replaced with index_vulnerability_occurrences_prim_iden_id_and_vuln_id
+    # see https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156266
+    remove_concurrent_index_by_name TABLE_NAME, INDEX_NAME
+  end
+
+  def down
+    add_concurrent_index TABLE_NAME, [:primary_identifier_id], name: INDEX_NAME
+  end
+end
diff --git a/db/schema_migrations/20240722074340 b/db/schema_migrations/20240722074340
new file mode 100644
index 0000000000000000000000000000000000000000..986f576e8dc5d2a910f48a31d6da2e42c0a5a67c
--- /dev/null
+++ b/db/schema_migrations/20240722074340
@@ -0,0 +1 @@
+73c084ef094d22432cae785c2b5a43b93d398fdfb405bd918673a0e17e86ad74
\ No newline at end of file
diff --git a/db/structure.sql b/db/structure.sql
index e69ef3f1bf00ae13f1c46068903968db5c454e88..bc340952be90ab96a34c84d20a0c7729433d310e 100644
--- a/db/structure.sql
+++ b/db/structure.sql
@@ -29749,8 +29749,6 @@ CREATE INDEX index_vulnerability_occurrences_on_location_k8s_agent_id ON vulnera
 
 CREATE INDEX index_vulnerability_occurrences_on_location_k8s_cluster_id ON vulnerability_occurrences USING gin ((((location -> 'kubernetes_resource'::text) -> 'cluster_id'::text))) WHERE (report_type = 7);
 
-CREATE INDEX index_vulnerability_occurrences_on_primary_identifier_id ON vulnerability_occurrences USING btree (primary_identifier_id);
-
 CREATE INDEX index_vulnerability_occurrences_on_scanner_id ON vulnerability_occurrences USING btree (scanner_id);
 
 CREATE UNIQUE INDEX index_vulnerability_occurrences_on_uuid_1 ON vulnerability_occurrences USING btree (uuid);
diff --git a/spec/support/helpers/database/duplicate_indexes.yml b/spec/support/helpers/database/duplicate_indexes.yml
index 79921cc95a1eb58a04479b32efb97d00e6ab62d5..248bb2d38a58691be44660d03ab247504eccb9f7 100644
--- a/spec/support/helpers/database/duplicate_indexes.yml
+++ b/spec/support/helpers/database/duplicate_indexes.yml
@@ -120,9 +120,6 @@ vulnerability_finding_signatures:
 vulnerability_flags:
   index_vulnerability_flags_on_unique_columns:
   - index_vulnerability_flags_on_vulnerability_occurrence_id
-vulnerability_occurrences:
-  index_vulnerability_occurrences_prim_iden_id_and_vuln_id:
-  - index_vulnerability_occurrences_on_primary_identifier_id
 work_item_hierarchy_restrictions:
   index_work_item_hierarchy_restrictions_on_parent_and_child:
   - index_work_item_hierarchy_restrictions_on_parent_type_id