From 4e27ee2ff6964f1ac2158bf7b762b6b311fd1931 Mon Sep 17 00:00:00 2001 From: owensmallwood Date: Thu, 20 Mar 2025 16:51:37 -0600 Subject: [PATCH] Unified Storage: Add index on dashboard_tag table for dashboard_uid column (#102551) add index on dashboard_tag table for dashboard_uid column --- .../sqlstore/migrations/dashboard_mig.go | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/pkg/services/sqlstore/migrations/dashboard_mig.go b/pkg/services/sqlstore/migrations/dashboard_mig.go index 002b1e2e8a7..c6943ffb07d 100644 --- a/pkg/services/sqlstore/migrations/dashboard_mig.go +++ b/pkg/services/sqlstore/migrations/dashboard_mig.go @@ -261,6 +261,11 @@ func addDashboardMigration(mg *Migrator) { mg.AddMigration("Add apiVersion for dashboard", NewAddColumnMigration(dashboardV2, &Column{ Name: "api_version", Type: DB_Varchar, Length: 16, Nullable: true, })) + + mg.AddMigration("Add index for dashboard_uid on dashboard_tag table", NewAddIndexMigration(dashboardTagV1, &Index{ + Cols: []string{"dashboard_uid"}, + Type: IndexType, + })) } type FillDashbordUIDAndOrgIDMigration struct { @@ -278,23 +283,23 @@ func (m *FillDashbordUIDAndOrgIDMigration) Exec(sess *xorm.Session, mg *Migrator func RunDashboardTagMigrations(sess *xorm.Session, driverName string) error { // sqlite sql := `UPDATE dashboard_tag - SET + SET dashboard_uid = (SELECT uid FROM dashboard WHERE dashboard.id = dashboard_tag.dashboard_id), org_id = (SELECT org_id FROM dashboard WHERE dashboard.id = dashboard_tag.dashboard_id) - WHERE + WHERE (dashboard_uid IS NULL OR org_id IS NULL) AND EXISTS (SELECT 1 FROM dashboard WHERE dashboard.id = dashboard_tag.dashboard_id);` if driverName == Postgres { - sql = `UPDATE dashboard_tag - SET dashboard_uid = dashboard.uid, + sql = `UPDATE dashboard_tag + SET dashboard_uid = dashboard.uid, org_id = dashboard.org_id - FROM dashboard + FROM dashboard WHERE dashboard_tag.dashboard_id = dashboard.id AND (dashboard_tag.dashboard_uid IS NULL OR dashboard_tag.org_id IS NULL);` } else if driverName == MySQL { - sql = `UPDATE dashboard_tag - LEFT JOIN dashboard ON dashboard_tag.dashboard_id = dashboard.id - SET dashboard_tag.dashboard_uid = dashboard.uid, + sql = `UPDATE dashboard_tag + LEFT JOIN dashboard ON dashboard_tag.dashboard_id = dashboard.id + SET dashboard_tag.dashboard_uid = dashboard.uid, dashboard_tag.org_id = dashboard.org_id WHERE dashboard_tag.dashboard_uid IS NULL OR dashboard_tag.org_id IS NULL;` }