質問編集履歴
2
コードブロックを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
外部キーの設定にあたって、CONSTRAINTを介すとインデックスが自動で貼られ、介さないと貼られないという現象を見つけました。
|
7
|
+
外部キーの設定にあたって、`CONSTRAINT`を介すとインデックスが自動で貼られ、介さないと貼られないという現象を見つけました。
|
8
8
|
|
9
9
|
|
10
10
|
|
@@ -16,11 +16,11 @@
|
|
16
16
|
|
17
17
|
【1】
|
18
18
|
|
19
|
-
なぜCONSTRAINTを介さないとインデックスが貼られないのでしょうか?
|
19
|
+
なぜ`CONSTRAINT`を介さないとインデックスが貼られないのでしょうか?
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
-
[MySQLでは外部キーを設定すると自動でインデックスが貼られる機能があるはず](http://kwski.net/mysql/602/)ですが、以下のCREATE文の
|
23
|
+
[MySQLでは外部キーを設定すると自動でインデックスが貼られる機能があるはず](http://kwski.net/mysql/602/)ですが、以下の`CREATE`文の
|
24
24
|
|
25
25
|
`FOREIGN KEY (first_ID) REFERENCES wp_firsts(ID),`
|
26
26
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
|
29
29
|
|
30
30
|
|
31
|
-
MariaDBだから自動で貼られないのでしょうか?しかしCONSTRAINTを介した
|
31
|
+
MariaDBだから自動で貼られないのでしょうか?しかし`CONSTRAINT`を介した
|
32
32
|
|
33
33
|
`CONSTRAINT fk_wp_seconds_01 FOREIGN KEY (first_ID) REFERENCES wp_firsts(ID)`
|
34
34
|
|
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
【2】
|
40
40
|
|
41
|
-
使い道のないインデックスは貼りたくないのですが、外部キーには名前をつけたいです。しかしCONSTRAINTを介さないと名前をつけることはできないと思うのですが、介せばインデックスが自動で貼られてしまいます。このジレンマを解消し、外部キーに名前をつけつつ、インデックスを貼らない方法はあるでしょうか?
|
41
|
+
使い道のないインデックスは貼りたくないのですが、外部キーには名前をつけたいです。しかし`CONSTRAINT`を介さないと名前をつけることはできないと思うのですが、介せばインデックスが自動で貼られてしまいます。このジレンマを解消し、外部キーに名前をつけつつ、インデックスを貼らない方法はあるでしょうか?
|
42
42
|
|
43
43
|
|
44
44
|
|
@@ -58,11 +58,11 @@
|
|
58
58
|
|
59
59
|
###発生している問題
|
60
60
|
|
61
|
-
該当のソースコードを実行しますと、wp_secondsテーブルに作成されるインデックスは下図の3つとなります。
|
61
|
+
該当のソースコードを実行しますと、`wp_seconds`テーブルに作成されるインデックスは下図の3つとなります。
|
62
|
-
|
63
|
-
|
64
|
-
|
62
|
+
|
63
|
+
|
64
|
+
|
65
|
-
CONSTRAINTを介して作成された外部キー(fk_wp_seconds_01)はインデックスが貼られ、介さない方の外部キーでは貼られないのです。
|
65
|
+
`CONSTRAINT`を介して作成された外部キー(`fk_wp_seconds_01`)はインデックスが貼られ、介さない方の外部キーでは貼られないのです。
|
66
66
|
|
67
67
|
![イメージ説明](ba8f08bceac423827df33e1a191bc2f5.jpeg)
|
68
68
|
|
@@ -70,7 +70,7 @@
|
|
70
70
|
|
71
71
|
### 該当のソースコード
|
72
72
|
|
73
|
-
wp_firstsテーブルと、そのIDカラムを外部キーに持つwp_secondsテーブルのCREATE文になります。
|
73
|
+
`wp_firsts`テーブルと、その`ID`カラムを外部キーに持つ`wp_seconds`テーブルの`CREATE`文になります。
|
74
74
|
|
75
75
|
```PHP
|
76
76
|
|
@@ -164,7 +164,7 @@
|
|
164
164
|
|
165
165
|
### 試したこと
|
166
166
|
|
167
|
-
wp_secondsテーブルに対しSHOW CREATE TABLEを実行すると以下の出力を得ましたが、さらに訳の分からないことになりました。
|
167
|
+
`wp_seconds`テーブルに対し`SHOW CREATE TABLE`を実行すると以下の出力を得ましたが、さらに訳の分からないことになりました。
|
168
168
|
|
169
169
|
|
170
170
|
|
@@ -194,11 +194,11 @@
|
|
194
194
|
|
195
195
|
```
|
196
196
|
|
197
|
-
この結果によれば、外部キーの設定はいずれもCONSTRAINTを介してされているのです。
|
197
|
+
この結果によれば、外部キーの設定はいずれも`CONSTRAINT`を介してされているのです。
|
198
|
-
|
199
|
-
|
200
|
-
|
198
|
+
|
199
|
+
|
200
|
+
|
201
|
-
ならばなぜ、fk_wp_seconds_01だけインデックスが貼られ、wp_seconds_ibfk_1は貼られないのか…訳がわからなくなてきました。
|
201
|
+
ならばなぜ、`fk_wp_seconds_01`だけインデックスが貼られ、`wp_seconds_ibfk_1`は貼られないのか…訳がわからなくなてきました。
|
202
202
|
|
203
203
|
### 補足情報(FW/ツールのバージョンなど)
|
204
204
|
|
1
知りたいことを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
### 前提
|
2
2
|
|
3
|
-
WordPressでCREATE TABLEしています。
|
3
|
+
WordPressで`CREATE TABLE`しています。
|
4
4
|
|
5
5
|
|
6
6
|
|
@@ -16,7 +16,23 @@
|
|
16
16
|
|
17
17
|
【1】
|
18
18
|
|
19
|
-
なぜCONSTRAINTを介さないとインデックスが貼られないのでしょうか?
|
19
|
+
なぜCONSTRAINTを介さないとインデックスが貼られないのでしょうか?
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
[MySQLでは外部キーを設定すると自動でインデックスが貼られる機能があるはず](http://kwski.net/mysql/602/)ですが、以下のCREATE文の
|
24
|
+
|
25
|
+
`FOREIGN KEY (first_ID) REFERENCES wp_firsts(ID),`
|
26
|
+
|
27
|
+
という行での外部キー設定ではいかにしてその機能を逃れ、インデックスが貼られずに済んでいるのでしょうか?
|
28
|
+
|
29
|
+
|
30
|
+
|
31
|
+
MariaDBだから自動で貼られないのでしょうか?しかしCONSTRAINTを介した
|
32
|
+
|
33
|
+
`CONSTRAINT fk_wp_seconds_01 FOREIGN KEY (first_ID) REFERENCES wp_firsts(ID)`
|
34
|
+
|
35
|
+
という行では自動で貼られていますし、謎です。
|
20
36
|
|
21
37
|
|
22
38
|
|