From 1d7d31b9ae0f90c0b4d7912f8fcedcb23b3eba6a Mon Sep 17 00:00:00 2001
From: Ian Littman <iansltx@gmail.com>
Date: Tue, 26 Jan 2021 14:08:25 -0600
Subject: [PATCH] Optimize target type + ID index for more realistic use cases
 (#8923)

Per https://youtu.be/EOXgHH4-WX4?t=1378 or thereabouts
---
 ...18_090026_swap_target_type_index_order.php | 40 +++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 database/migrations/2020_12_18_090026_swap_target_type_index_order.php

diff --git a/database/migrations/2020_12_18_090026_swap_target_type_index_order.php b/database/migrations/2020_12_18_090026_swap_target_type_index_order.php
new file mode 100644
index 000000000..9b637844f
--- /dev/null
+++ b/database/migrations/2020_12_18_090026_swap_target_type_index_order.php
@@ -0,0 +1,40 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class SwapTargetTypeIndexOrder extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('action_logs', function (Blueprint $table) {
+            $table->dropIndex(['target_id', 'target_type']);
+        });
+
+        Schema::table('action_logs', function (Blueprint $table) {
+            $table->index(['target_type', 'target_id']);
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('action_logs', function (Blueprint $table) {
+            $table->dropIndex(['target_type', 'target_id']);
+        });
+
+        Schema::table('action_logs', function (Blueprint $table) {
+            $table->index(['target_id', 'target_type']);
+        });
+    }
+}
-- 
GitLab