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

回答編集履歴

1

訂正

2016/07/28 12:32

投稿

coba-coba
coba-coba

スコア1409

answer CHANGED
@@ -7,11 +7,13 @@
7
7
 
8
8
  (ただし、データベースの容量があまりにも足りず、idを入れる容量さえ削りたいなら話は別ですが。)
9
9
 
10
- インデックスについて
10
+ インデックスについて(訂正後)
11
11
  ---
12
- はpost_idにインデックスを作成する必要はないと思います。
12
+ post_id外部キーとして利用するので、MySQLの場合は自動でpost_idにインデックスが付加されます。
13
- その理由を述べる前に、まずはインデックスを作る方針を確認します。
14
13
 
14
+ -----------------------------
15
+ 自動でインデックスは付加されますが、念のためpost_idを例にインデックスを作る方針を確認します。
16
+
15
17
  一般的にいわれている話ですが、インデックスは基本的に次のような場合に作成します。
16
18
  0. 大規模なテーブルに作成する
17
19
  0. カーディナリティの高い列に作成する
@@ -33,7 +35,14 @@
33
35
  どちらにせよ、一度に1つしかレコードを更新しないなら、インデックスの有無による差はあまりないはずです。
34
36
  ということで、インデックスの必要性は低いと思います。
35
37
 
38
+ 追記:結構頻繁にアクセス・更新するようですので、インデックスはあってもいいかもしれません。post_id自体は変更しないと思うので、インデックスの更新性能が下がることも少なそうですし。
39
+
36
40
  以上のことから、私はインデックスは作成しなくていいと思います。
41
+ インデックスを作成してもしなくても通常は大差無いのではないでしょうか。
42
+
37
43
  テーブルがあまりにも大規模なものならインデックスを作成してもいいかもしれませんが、記事とコメントの関係なら、1,000万件くらいまではインデックス無しでいいと私は考えます。
44
+ smnsmnさんのサイトに相当なアクセスがあり、データの規模も相当大きければ話は別ですが。
38
45
 
46
+ -----------------------------
39
- (smnsmnさんサイト相当なアクセスありタの規模も相当大きけば、話は別です。
47
+ ……こよう分析しましたが、結局はpost_idを外部キに設定するとインデックスが付加さす。
48
+ 失礼しました。