回答編集履歴

7

追記

2020/12/12 03:45

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -68,6 +68,18 @@
68
68
 
69
69
  --
70
70
 
71
+ ```SQL
72
+
73
+ select asin from asin
74
+
75
+ where MonorateBuyNum >= 15
76
+
77
+ and SettingProductItem=1
78
+
79
+ and (FlagSer&20)=0
80
+
81
+ ```
82
+
71
- [FlagSer&20]について、式インデックスを追加すればインデックスによる検索が行われると思いますので、追加されてはどうでしょうか。
83
+ 結局のところ、上記のクエリーが早くなれば解決すると思いますので、[FlagSer&20]について、式インデックスを追加されてはどうでしょうか。
72
84
 
73
85
  [MySQL 5.7で生成カラムを使って関数INDEXを作成する](https://qiita.com/hmatsu47/items/128ece7276e4deac1477)

6

追記

2020/12/12 03:45

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -63,3 +63,11 @@
63
63
  analyzetime:(asin, SiteName, Tick)
64
64
 
65
65
  ※既存ので間にあう気もしますが。
66
+
67
+ 追記
68
+
69
+ --
70
+
71
+ [FlagSer&20]について、式インデックスを追加すればインデックスによる検索が行われると思いますので、追加されてはどうでしょうか。
72
+
73
+ [MySQL 5.7で生成カラムを使って関数INDEXを作成する](https://qiita.com/hmatsu47/items/128ece7276e4deac1477)

5

追記

2020/12/12 03:35

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -1,4 +1,6 @@
1
+ そもそもですが、[FlagSer&20]についてのインデックスが無いので、検索でインデックスのみにはならないと思います。
2
+
1
- 少なくともインデックスだけで解決できるように、先ずは以下の複合インデックスを追加してみてはどうでしょうか。
3
+ ただ、インデックスだけで解決できるように、先ずは以下の複合インデックスを追加してみてはどうでしょうか。
2
4
 
3
5
  ※データ分布などが良く分かりませんので効率的なものとは言えませんが。
4
6
 

4

推敲

2020/12/12 03:32

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -59,3 +59,5 @@
59
59
  asin:(MonorateBuyNum, SettingProductItem, FlagSer, asin)
60
60
 
61
61
  analyzetime:(asin, SiteName, Tick)
62
+
63
+ ※既存ので間にあう気もしますが。

3

推敲

2020/12/12 03:23

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  ```
30
30
 
31
- 後は主キーinを使用するとか
31
+ 後は主キーを条件にしたinを使用するとか
32
32
 
33
33
  ```SQL
34
34
 

2

追記

2020/12/12 03:22

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -27,3 +27,35 @@
27
27
  and (asin.FlagSer&20)=0
28
28
 
29
29
  ```
30
+
31
+ 後は主キーinを使用するとか
32
+
33
+ ```SQL
34
+
35
+ select asin
36
+
37
+ from analyzetime
38
+
39
+ where Tick < 637433317810371056
40
+
41
+ and SiteName='サウンドハウス'
42
+
43
+ and asian in (
44
+
45
+ select asin from asin
46
+
47
+ where MonorateBuyNum >= 15
48
+
49
+ and SettingProductItem=1
50
+
51
+ and (FlagSer&20)=0
52
+
53
+ )
54
+
55
+ ```
56
+
57
+ 上記の場合のインデックスは、
58
+
59
+ asin:(MonorateBuyNum, SettingProductItem, FlagSer, asin)
60
+
61
+ analyzetime:(asin, SiteName, Tick)

1

訂正

2020/12/12 03:21

投稿

sazi
sazi

スコア25206

test CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ※データ分布などが良く分かりませんので効率的なものとは言えませんが。
4
4
 
5
- asian:(asian, MonorateBuyNum, SettingProductItem, FlagSer)
5
+ asin:(asin, MonorateBuyNum, SettingProductItem, FlagSer)
6
6
 
7
- analyzetime:(asian, Tick, SiteName)
7
+ analyzetime:(asin, Tick, SiteName)
8
8
 
9
9
 
10
10
 
@@ -12,7 +12,7 @@
12
12
 
13
13
  ```SQL
14
14
 
15
- select analyzetime.asian
15
+ select analyzetime.asin
16
16
 
17
17
  from analyzetime inner join asin using(asin)
18
18