From 4cdf5f688dbf4e3cbac8da47ba6eaeb84151a5b9 Mon Sep 17 00:00:00 2001 From: xboard Date: Thu, 16 Jan 2025 00:24:13 +0800 Subject: [PATCH] feat(database): add single column indexes for performance optimization - Add individual indexes for v2_user table (t, online_count, created_at) - Add individual indexes for v2_order table (created_at, status, total_amount, commission fields) - Add individual indexes for v2_stat_server table (server_id, record_at, u, d) - Add individual indexes for v2_stat_user table (u, d) - Add individual indexes for v2_commission_log table (created_at, get_amount) - Add individual indexes for v2_ticket table (status, created_at) This change improves query flexibility and maintainability by using single column indexes instead of composite indexes. Each field can now be queried independently with optimal performance. --- ...15_000002_add_stat_performance_indexes.php | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 database/migrations/2025_01_15_000002_add_stat_performance_indexes.php diff --git a/database/migrations/2025_01_15_000002_add_stat_performance_indexes.php b/database/migrations/2025_01_15_000002_add_stat_performance_indexes.php new file mode 100644 index 0000000..4640e7e --- /dev/null +++ b/database/migrations/2025_01_15_000002_add_stat_performance_indexes.php @@ -0,0 +1,93 @@ +index('t'); + $table->index('online_count'); + $table->index('created_at'); + }); + + Schema::table('v2_order', function (Blueprint $table) { + $table->index('created_at'); + $table->index('status'); + $table->index('total_amount'); + $table->index('commission_status'); + $table->index('invite_user_id'); + $table->index('commission_balance'); + }); + + Schema::table('v2_stat_server', function (Blueprint $table) { + $table->index('server_id'); + $table->index('record_at'); + $table->index('u'); + $table->index('d'); + }); + + Schema::table('v2_stat_user', function (Blueprint $table) { + $table->index('u'); + $table->index('d'); + }); + + Schema::table('v2_commission_log', function (Blueprint $table) { + $table->index('created_at'); + $table->index('get_amount'); + }); + + Schema::table('v2_ticket', function (Blueprint $table) { + $table->index('status'); + $table->index('created_at'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('v2_user', function (Blueprint $table) { + $table->dropIndex(['t']); + $table->dropIndex(['online_count']); + $table->dropIndex(['created_at']); + }); + + Schema::table('v2_order', function (Blueprint $table) { + $table->dropIndex(['created_at']); + $table->dropIndex(['status']); + $table->dropIndex(['total_amount']); + $table->dropIndex(['commission_status']); + $table->dropIndex(['invite_user_id']); + $table->dropIndex(['commission_balance']); + }); + + Schema::table('v2_stat_server', function (Blueprint $table) { + $table->dropIndex(['server_id']); + $table->dropIndex(['record_at']); + $table->dropIndex(['u']); + $table->dropIndex(['d']); + }); + + Schema::table('v2_stat_user', function (Blueprint $table) { + $table->dropIndex(['u']); + $table->dropIndex(['d']); + }); + + Schema::table('v2_commission_log', function (Blueprint $table) { + $table->dropIndex(['created_at']); + $table->dropIndex(['get_amount']); + }); + + Schema::table('v2_ticket', function (Blueprint $table) { + $table->dropIndex(['status']); + $table->dropIndex(['created_at']); + }); + } +}; \ No newline at end of file