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

回答編集履歴

3

誤字の修正

2016/09/18 04:07

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
  ```
20
20
 
21
- さらに大幅な速度アップを図るな name と inserted にもインデックスを設定するぐらいかな。
21
+ さらに大幅な速度アップを図るな name と inserted にもインデックスを設定するぐらいかな。
22
22
 
23
23
  ---
24
24
  **追記**

2

補足説明追加

2016/09/18 04:07

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -21,7 +21,7 @@
21
21
  さらに大幅な速度アップを図るなる name と inserted にもインデックスを設定するぐらいかな。
22
22
 
23
23
  ---
24
- 追記
24
+ **追記**
25
25
  > 結局UPDATE 〜 INになっているのが原因かも知れません。
26
26
 
27
27
  UPDATEの方もINNER JOIN に変更してみました。これで改善できればいいのですが。
@@ -40,4 +40,6 @@
40
40
  ON master.ID = t.ID
41
41
  SET master.flag = 1
42
42
  ;
43
- ```
43
+ ```
44
+
45
+ あと、INの方もJOINの方も DISTINCT を削除しても同じ結果になりますので、それを削除したSQLも試してみてください。重複排除処理が省略されますので高速化されるかも?

1

コメントを受けて追記

2016/09/18 03:27

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -18,4 +18,26 @@
18
18
 
19
19
  ```
20
20
 
21
- さらに大幅な速度アップを図るなる name と inserted にもインデックスを設定するぐらいかな。
21
+ さらに大幅な速度アップを図るなる name と inserted にもインデックスを設定するぐらいかな。
22
+
23
+ ---
24
+ 追記
25
+ > 結局UPDATE 〜 INになっているのが原因かも知れません。
26
+
27
+ UPDATEの方もINNER JOIN に変更してみました。これで改善できればいいのですが。
28
+
29
+ ```SQL
30
+ UPDATE master INNER JOIN
31
+ (
32
+ SELECT DISTINCT wlist.ID
33
+ FROM
34
+ web_list AS wlist INNER JOIN tel_list AS tlist
35
+ ON wlist.name = tlist.name
36
+ WHERE
37
+ tlist.inserted > wlist.inserted
38
+ And tlist.inserted <= wlist.inserted + INTERVAL 3 DAY
39
+ ) t
40
+ ON master.ID = t.ID
41
+ SET master.flag = 1
42
+ ;
43
+ ```