回答編集履歴
6
補足と修正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
|
22
22
|
|
23
|
-
一方、インデックスを張ってある場合索引が使われ、
|
23
|
+
一方、インデックスを張ってある場合は索引が使われ、
|
24
24
|
|
25
25
|
索引というからにはソートが行われていて、
|
26
26
|
|
@@ -106,7 +106,7 @@
|
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
-
INDEXを張ると良い
|
109
|
+
INDEXを張ると良い列ですが、
|
110
110
|
|
111
111
|
・カーディナリティが高い列
|
112
112
|
|
@@ -136,7 +136,7 @@
|
|
136
136
|
|
137
137
|
上述したとおり、プログラムの仕様上検索に使われる、収録データ種類の多い列にINDEXを張るべきで、
|
138
138
|
|
139
|
-
それは
|
139
|
+
それは多くの場合、プライマリキーになりえます。
|
140
140
|
|
141
141
|
|
142
142
|
|
5
補足
test
CHANGED
@@ -14,13 +14,19 @@
|
|
14
14
|
|
15
15
|
テーブルの全ての行を1行づつ検査していきます。
|
16
16
|
|
17
|
+
ストレージにもよりますが、やはり、データを読み込むのは遅いので、
|
18
|
+
|
19
|
+
該当しない不必要な行の読み込みは速度低下につながります。
|
20
|
+
|
17
21
|
|
18
22
|
|
19
23
|
一方、インデックスを張ってある場合索引が使われ、
|
20
24
|
|
21
25
|
索引というからにはソートが行われていて、
|
22
26
|
|
23
|
-
検索文字がどの行に収録されているか、全ての行を検査しなくてもピンポイントでわかるので
|
27
|
+
検索文字がどの行に収録されているか、全ての行を検査しなくてもピンポイントでわかるので
|
28
|
+
|
29
|
+
無駄な読み込みが発生しないため速い
|
24
30
|
|
25
31
|
ということです。
|
26
32
|
|
4
誤字修正
test
CHANGED
@@ -110,7 +110,7 @@
|
|
110
110
|
|
111
111
|
|
112
112
|
|
113
|
-
「カーディナリティが高い」とは、列に格納されるデータの種類が多いことを
|
113
|
+
「カーディナリティが高い」とは、列に格納されるデータの種類が多いことを指すのですが、
|
114
114
|
|
115
115
|
例えばフラグを格納した列のように0か1しかない列の場合、
|
116
116
|
|
3
補足
test
CHANGED
@@ -68,6 +68,10 @@
|
|
68
68
|
|
69
69
|
|
70
70
|
|
71
|
+
Teletypeの検索結果が分からないと、CustomerのどのINDEXを参照したら良いかわからないので使いようがない、ということだと思います。
|
72
|
+
|
73
|
+
|
74
|
+
|
71
75
|
ですので、「MySQLのサブクエリは遅い」というレッテルが貼られていた背景があります。
|
72
76
|
|
73
77
|
|
2
補足
test
CHANGED
@@ -64,6 +64,8 @@
|
|
64
64
|
|
65
65
|
Telephoneとの比較は、Customerの行数 × Teletypeの検索結果行数分だけ行われるという仕様でした。
|
66
66
|
|
67
|
+
つまり、Customerの行数回、Teletypeの検索が行われます。
|
68
|
+
|
67
69
|
|
68
70
|
|
69
71
|
ですので、「MySQLのサブクエリは遅い」というレッテルが貼られていた背景があります。
|
1
補足
test
CHANGED
@@ -82,6 +82,10 @@
|
|
82
82
|
|
83
83
|
のようにJOINを行うとINDEXが利用されるので、こちらの方が圧倒的に速くなります。
|
84
84
|
|
85
|
+
(一例です。ANYのサブクエリと等価ではありません。
|
86
|
+
|
87
|
+
構文を精査していないので、検索結果は変わると思います。)
|
88
|
+
|
85
89
|
|
86
90
|
|
87
91
|
しかし、MySQL 5.6ではオプティマイザが改良され、この点が改善されていますので、
|