diff --git a/GenOnlineService/Database/Database.Social.cs b/GenOnlineService/Database/Database.Social.cs index 63ae0f2..e9ee22b 100644 --- a/GenOnlineService/Database/Database.Social.cs +++ b/GenOnlineService/Database/Database.Social.cs @@ -44,6 +44,8 @@ public void Configure(EntityTypeBuilder builder) builder.ToTable("friends"); builder.HasKey(f => new { f.UserId1, f.UserId2 }); + builder.HasIndex(f => f.UserId2) + .HasDatabaseName("ix_friends_user_id_2"); builder.Property(f => f.UserId1) .HasColumnName("user_id_1"); @@ -60,6 +62,8 @@ public void Configure(EntityTypeBuilder builder) builder.ToTable("friends_requests"); builder.HasKey(f => new { f.SourceUserId, f.TargetUserId }); + builder.HasIndex(f => f.TargetUserId) + .HasDatabaseName("ix_friends_requests_target_user_id"); builder.Property(f => f.SourceUserId) .HasColumnName("source_user_id"); diff --git a/GenOnlineService/Database/Database.User.cs b/GenOnlineService/Database/Database.User.cs index af66d34..3560f4b 100644 --- a/GenOnlineService/Database/Database.User.cs +++ b/GenOnlineService/Database/Database.User.cs @@ -123,6 +123,8 @@ public void Configure(EntityTypeBuilder builder) // prim key builder.HasKey(e => e.ID); + builder.HasIndex(e => e.IsBanned) + .HasDatabaseName("ix_users_banned"); builder.Property(e => e.ID).HasColumnName("user_id"); diff --git a/GenOnlineService/Database_Structure/structure.sql b/GenOnlineService/Database_Structure/structure.sql index 695506d..0f96821 100644 --- a/GenOnlineService/Database_Structure/structure.sql +++ b/GenOnlineService/Database_Structure/structure.sql @@ -32,7 +32,8 @@ CREATE TABLE IF NOT EXISTS `daily_stats` ( CREATE TABLE IF NOT EXISTS `friends` ( `user_id_1` bigint(20) NOT NULL, `user_id_2` bigint(20) NOT NULL, - PRIMARY KEY (`user_id_1`,`user_id_2`) USING BTREE + PRIMARY KEY (`user_id_1`,`user_id_2`) USING BTREE, + KEY `ix_friends_user_id_2` (`user_id_2`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -- Data exporting was unselected. @@ -50,7 +51,8 @@ CREATE TABLE IF NOT EXISTS `friends_blocked` ( CREATE TABLE IF NOT EXISTS `friends_requests` ( `source_user_id` bigint(20) NOT NULL, `target_user_id` bigint(20) NOT NULL, - PRIMARY KEY (`source_user_id`,`target_user_id`) USING BTREE + PRIMARY KEY (`source_user_id`,`target_user_id`) USING BTREE, + KEY `ix_friends_requests_target_user_id` (`target_user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_general_ci; -- Data exporting was unselected. @@ -218,7 +220,8 @@ CREATE TABLE IF NOT EXISTS `users` ( `banned_by` varchar(50) DEFAULT NULL, `ban_verified_by` varchar(50) DEFAULT NULL, `ban_aliases` varchar(50) DEFAULT NULL, - PRIMARY KEY (`user_id`) + PRIMARY KEY (`user_id`), + KEY `ix_users_banned` (`banned`) ) ENGINE=InnoDB AUTO_INCREMENT=34621 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- Data exporting was unselected. diff --git a/GenOnlineService/Database_Structure/upgrade_20261016_social_and_ban_indexes.sql b/GenOnlineService/Database_Structure/upgrade_20261016_social_and_ban_indexes.sql new file mode 100644 index 0000000..8875a96 --- /dev/null +++ b/GenOnlineService/Database_Structure/upgrade_20261016_social_and_ban_indexes.sql @@ -0,0 +1,17 @@ +CREATE INDEX IF NOT EXISTS `ix_friends_requests_target_user_id` +ON `friends_requests` (`target_user_id`) +WAIT 5 +ALGORITHM=NOCOPY +LOCK=NONE; + +CREATE INDEX IF NOT EXISTS `ix_friends_user_id_2` +ON `friends` (`user_id_2`) +WAIT 5 +ALGORITHM=NOCOPY +LOCK=NONE; + +CREATE INDEX IF NOT EXISTS `ix_users_banned` +ON `users` (`banned`) +WAIT 5 +ALGORITHM=NOCOPY +LOCK=NONE;