From 54aa9ee3cf41a0c83bc3f99df83397b782530662 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Sat, 15 Sep 2018 14:32:51 +0930 Subject: [PATCH] Add database indices. closes #127 --- .../2018_09_15_041340_add_users_indicies.php | 33 ++++++++++++++++ ..._09_15_041828_add_discussions_indicies.php | 39 +++++++++++++++++++ ...09_15_043337_add_notifications_indices.php | 27 +++++++++++++ .../2018_09_15_043621_add_posts_indices.php | 31 +++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 migrations/2018_09_15_041340_add_users_indicies.php create mode 100644 migrations/2018_09_15_041828_add_discussions_indicies.php create mode 100644 migrations/2018_09_15_043337_add_notifications_indices.php create mode 100644 migrations/2018_09_15_043621_add_posts_indices.php diff --git a/migrations/2018_09_15_041340_add_users_indicies.php b/migrations/2018_09_15_041340_add_users_indicies.php new file mode 100644 index 000000000..30aebd912 --- /dev/null +++ b/migrations/2018_09_15_041340_add_users_indicies.php @@ -0,0 +1,33 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Schema\Builder; + +return [ + 'up' => function (Builder $schema) { + $schema->table('users', function (Blueprint $table) { + $table->index('joined_at'); + $table->index('last_seen_at'); + $table->index('discussion_count'); + $table->index('comment_count'); + }); + }, + + 'down' => function (Builder $schema) { + $schema->table('users', function (Blueprint $table) { + $table->dropIndex(['joined_at']); + $table->dropIndex(['last_seen_at']); + $table->dropIndex(['discussion_count']); + $table->dropIndex(['comment_count']); + }); + } +]; diff --git a/migrations/2018_09_15_041828_add_discussions_indicies.php b/migrations/2018_09_15_041828_add_discussions_indicies.php new file mode 100644 index 000000000..15433f0fb --- /dev/null +++ b/migrations/2018_09_15_041828_add_discussions_indicies.php @@ -0,0 +1,39 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Schema\Builder; + +return [ + 'up' => function (Builder $schema) { + $schema->table('discussions', function (Blueprint $table) { + $table->index('last_posted_at'); + $table->index('last_posted_user_id'); + $table->index('created_at'); + $table->index('user_id'); + $table->index('comment_count'); + $table->index('participant_count'); + $table->index('hidden_at'); + }); + }, + + 'down' => function (Builder $schema) { + $schema->table('discussions', function (Blueprint $table) { + $table->dropIndex(['last_posted_at']); + $table->dropIndex(['last_posted_user_id']); + $table->dropIndex(['created_at']); + $table->dropIndex(['user_id']); + $table->dropIndex(['comment_count']); + $table->dropIndex(['participant_count']); + $table->dropIndex(['hidden_at']); + }); + } +]; diff --git a/migrations/2018_09_15_043337_add_notifications_indices.php b/migrations/2018_09_15_043337_add_notifications_indices.php new file mode 100644 index 000000000..724c79eb6 --- /dev/null +++ b/migrations/2018_09_15_043337_add_notifications_indices.php @@ -0,0 +1,27 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Schema\Builder; + +return [ + 'up' => function (Builder $schema) { + $schema->table('notifications', function (Blueprint $table) { + $table->index('user_id'); + }); + }, + + 'down' => function (Builder $schema) { + $schema->table('notifications', function (Blueprint $table) { + $table->dropIndex(['user_id']); + }); + } +]; diff --git a/migrations/2018_09_15_043621_add_posts_indices.php b/migrations/2018_09_15_043621_add_posts_indices.php new file mode 100644 index 000000000..484a3b842 --- /dev/null +++ b/migrations/2018_09_15_043621_add_posts_indices.php @@ -0,0 +1,31 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Illuminate\Database\Schema\Blueprint; +use Illuminate\Database\Schema\Builder; + +return [ + 'up' => function (Builder $schema) { + $schema->table('posts', function (Blueprint $table) { + $table->index(['discussion_id', 'number']); + $table->index(['discussion_id', 'created_at']); + $table->index(['user_id', 'created_at']); + }); + }, + + 'down' => function (Builder $schema) { + $schema->table('posts', function (Blueprint $table) { + $table->dropIndex(['discussion_id', 'number']); + $table->dropIndex(['discussion_id', 'created_at']); + $table->dropIndex(['user_id', 'created_at']); + }); + } +];