回答編集履歴

6

補足と修正

2015/03/05 02:47

投稿

退会済みユーザー
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

補足

2015/03/05 02:47

投稿

退会済みユーザー
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

誤字修正

2015/03/05 02:42

投稿

退会済みユーザー
test CHANGED
@@ -110,7 +110,7 @@
110
110
 
111
111
 
112
112
 
113
- 「カーディナリティが高い」とは、列に格納されるデータの種類が多いことをすのですが、
113
+ 「カーディナリティが高い」とは、列に格納されるデータの種類が多いことをすのですが、
114
114
 
115
115
  例えばフラグを格納した列のように0か1しかない列の場合、
116
116
 

3

補足

2015/03/05 02:34

投稿

退会済みユーザー
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

補足

2015/03/05 02:28

投稿

退会済みユーザー
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

補足

2015/03/05 02:24

投稿

退会済みユーザー
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ではオプティマイザが改良され、この点が改善されていますので、