From 6c70925c6f60e171c6221f0a54ecfd9ba459d21c Mon Sep 17 00:00:00 2001 From: Sam Date: Tue, 27 Mar 2018 17:36:13 +1100 Subject: [PATCH] PERF: add missing index for akismet Note, current practice if for plugins to submit PRs to core for any migrations required for plugins, so we can better control schema. Especially if core tables are being touched. In this case index has close to zero cost unless akismet is installed This reduces the akismet admin query from 20ms on every new page load to 0.5ms --- ...327062911_add_post_custom_fields_akismet_index.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 db/migrate/20180327062911_add_post_custom_fields_akismet_index.rb diff --git a/db/migrate/20180327062911_add_post_custom_fields_akismet_index.rb b/db/migrate/20180327062911_add_post_custom_fields_akismet_index.rb new file mode 100644 index 00000000000..66fb4a227c6 --- /dev/null +++ b/db/migrate/20180327062911_add_post_custom_fields_akismet_index.rb @@ -0,0 +1,12 @@ +# This is our current pattern for data migrations needed by plugins, we prefer to keep them in core +# so schema is tightly controlled, especially if we are amending tables owned by core +# +# this index makes looking up posts requiring review much faster (20ms on meta) + +class AddPostCustomFieldsAkismetIndex < ActiveRecord::Migration[5.1] + def change + add_index :post_custom_fields, [:post_id], + name: 'idx_post_custom_fields_akismet', + where: "name = 'AKISMET_STATE' AND value = 'needs_review'" + end +end