teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

テーブルの設計を表からcreate文に変更

2020/07/25 17:12

投稿

yuki84web
yuki84web

スコア1857

title CHANGED
File without changes
body CHANGED
@@ -3,15 +3,24 @@
3
3
 
4
4
  検索対象となるのは、例としてイベントへの応募データを管理する下記のようなテーブル(enters)です。
5
5
 
6
- |物理名称|論理名称|型|備考|
6
+ ```ここに言語を入力
7
- |:--|:--|:--|:--|
7
+ CREATE TABLE `enters` (
8
- |id|イベント応募ID|bigint|PRIMARY_KEY UNIQUE UNSIGNED NOT_NULL AUTO_INCREMENT|
8
+ `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
9
- |event_id|イベントID|bigint|FOREIGN_KEY UNSIGNED NOT_NULL|
9
+ `event_id` BIGINT UNSIGNED NOT NULL,
10
+ FOREIGN KEY (event_id) REFERENCES events(id),
10
- |name|応募者名|varchar|NOT_NULL|
11
+ `name` varchar(255),
11
- |status|応募状況ステータス|tinyint|UNSIGNED NOT_NULL|
12
+ `status` TINYINT UNSIGNED NOT NULL,
12
- |created_at|作成日時(応募日時)|timestamp||
13
+ `created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
13
- |edited_at|更新日時|timestamp||
14
+ `edited_at` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
15
+ );
14
16
 
17
+ CREATE TABLE `events` (
18
+ `id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
19
+ `name` varchar(255),
20
+ (省略)
21
+ );
22
+ ```
23
+
15
24
  このテーブルの更新対象カラムはstatusとedited_atのみ。
16
25
  event_idでイベントテーブル(events)と結合し、イベント名(varchar型)を取得します。
17
26
 

1

誤字修正、補足説明追加

2020/07/25 17:12

投稿

yuki84web
yuki84web

スコア1857

title CHANGED
File without changes
body CHANGED
@@ -34,16 +34,16 @@
34
34
 
35
35
  ```ここに言語を入力
36
36
  [SELECT...] ORDER BY created_at ASC LIMIT 1000
37
- [SELECT...] WEHER event_id = 1 ORDER BY created_at DESC
37
+ [SELECT...] WHERE event_id = 1 ORDER BY created_at DESC
38
- [SELECT...] WEHER event_id = 1 AND status = 0 ORDER BY created_at ASC LIMIT 1000
38
+ [SELECT...] WHERE event_id = 1 AND status = 0 ORDER BY created_at ASC LIMIT 1000
39
- [SELECT...] WEHER event_id = 1 AND status = 0 AND created_at >= '2020-01-01 00:00:00'
39
+ [SELECT...] WHERE event_id = 1 AND status = 0 AND created_at >= '2020-01-01 00:00:00'
40
- [SELECT...] WEHER created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' ORDER BY created_at DESC
40
+ [SELECT...] WHERE created_at BETWEEN '2020-01-01 00:00:00' AND '2020-12-31 23:59:59' ORDER BY created_at DESC
41
41
  ```
42
42
 
43
43
  ### 実現したいこと
44
44
 
45
45
  上記を踏まえ、まず最初の画面初期表示時に発行されるクエリの為に、"created_at"カラムにインデックスが必要だとは思うのですが、
46
- それ以外のカラムについてはクエリのパターンが多く、どのようにすべきか悩んでいます。
46
+ それ以外のカラムについては"発行されるクエリ例"ようにクエリのパターンが多く、どのようにすべきか悩んでいます。
47
47
  あらゆるパターンを考慮して複合インデックス含め作成しておくべきでしょうか。
48
48
 
49
49
  なお、現状のレコード数は1000件にも満たないので、インデックスの有効性は無いと思っていますが、