回答編集履歴

3

誤字の修正

2016/09/18 04:07

投稿

hatena19
hatena19

スコア33782

test CHANGED
@@ -38,7 +38,7 @@
38
38
 
39
39
 
40
40
 
41
- さらに大幅な速度アップを図るな name と inserted にもインデックスを設定するぐらいかな。
41
+ さらに大幅な速度アップを図るな name と inserted にもインデックスを設定するぐらいかな。
42
42
 
43
43
 
44
44
 

2

補足説明追加

2016/09/18 04:07

投稿

hatena19
hatena19

スコア33782

test CHANGED
@@ -44,7 +44,7 @@
44
44
 
45
45
  ---
46
46
 
47
- 追記
47
+ **追記**
48
48
 
49
49
  > 結局UPDATE 〜 INになっているのが原因かも知れません。
50
50
 
@@ -83,3 +83,7 @@
83
83
  ;
84
84
 
85
85
  ```
86
+
87
+
88
+
89
+ あと、INの方もJOINの方も DISTINCT を削除しても同じ結果になりますので、それを削除したSQLも試してみてください。重複排除処理が省略されますので高速化されるかも?

1

コメントを受けて追記

2016/09/18 03:27

投稿

hatena19
hatena19

スコア33782

test CHANGED
@@ -39,3 +39,47 @@
39
39
 
40
40
 
41
41
  さらに大幅な速度アップを図るなる name と inserted にもインデックスを設定するぐらいかな。
42
+
43
+
44
+
45
+ ---
46
+
47
+ 追記
48
+
49
+ > 結局UPDATE 〜 INになっているのが原因かも知れません。
50
+
51
+
52
+
53
+ UPDATEの方もINNER JOIN に変更してみました。これで改善できればいいのですが。
54
+
55
+
56
+
57
+ ```SQL
58
+
59
+ UPDATE master INNER JOIN
60
+
61
+ (
62
+
63
+ SELECT DISTINCT wlist.ID
64
+
65
+ FROM
66
+
67
+ web_list AS wlist INNER JOIN tel_list AS tlist
68
+
69
+ ON wlist.name = tlist.name
70
+
71
+ WHERE
72
+
73
+ tlist.inserted > wlist.inserted
74
+
75
+ And tlist.inserted <= wlist.inserted + INTERVAL 3 DAY
76
+
77
+ ) t
78
+
79
+ ON master.ID = t.ID
80
+
81
+ SET master.flag = 1
82
+
83
+ ;
84
+
85
+ ```