質問編集履歴
3
式インデックスの検証を行ったので追記
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
joinに使用する列のインデックスを作成し、force index for joinの併用も試しましたが高速化できませんでした。
|
|
5
5
|
どうすればインデックスを使用して高速化できるのでしょうか。
|
|
6
6
|
|
|
7
|
+
・追記
|
|
8
|
+
asinテーブルのwhereに使用する「FlagSer&20」を式インデックスとして作成しましたが、結果は変わりませんでした。
|
|
9
|
+
> KEY `index_test2` (`MonorateBuyNum`,`SettingProductItem`,((`FlagSer` & 20)),`ASIN`)
|
|
10
|
+
|
|
7
11
|
### クエリとexplain
|
|
8
12
|
```ここに言語を入力
|
|
9
13
|
select
|
|
@@ -172,7 +176,9 @@
|
|
|
172
176
|
KEY `product_idx` (`ProductItemSetTime`,`FlagSer`,`NotExit`),
|
|
173
177
|
KEY `fee_idx` (`FeeSetTime`,`FlagSer`,`NotExit`),
|
|
174
178
|
KEY `dhash_idx` (`DHashSetTime`,`FlagSer`),
|
|
175
|
-
KEY `ureteru_get_index` (`MonorateBuyNum`,`SettingProductItem`,`FlagSer`,`ASIN`)
|
|
179
|
+
KEY `ureteru_get_index` (`MonorateBuyNum`,`SettingProductItem`,`FlagSer`,`ASIN`),
|
|
180
|
+
KEY `index_test` (((`FlagSer` & 20))),
|
|
181
|
+
KEY `index_test2` (`MonorateBuyNum`,`SettingProductItem`,((`FlagSer` & 20)),`ASIN`)
|
|
176
182
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci |------+
|
|
177
183
|
```
|
|
178
184
|
```ここに言語を入力
|
2
記載するcreate tableを間違えた
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -89,18 +89,102 @@
|
|
|
89
89
|
|
|
90
90
|
### create table
|
|
91
91
|
```ここに言語を入力
|
|
92
|
-
|
|
93
|
-
|
|
|
94
|
-
`
|
|
95
|
-
`
|
|
96
|
-
`
|
|
97
|
-
`
|
|
98
|
-
`
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
92
|
+
//asinテーブル
|
|
93
|
+
| asin | CREATE TABLE `asin` (
|
|
94
|
+
`ASIN` varchar(10) COLLATE utf8mb4_general_ci NOT NULL,
|
|
95
|
+
`JAN` varchar(13) COLLATE utf8mb4_general_ci NOT NULL,
|
|
96
|
+
`Title` varchar(1024) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
|
97
|
+
`ImageUrl` varchar(2048) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
|
98
|
+
`FixFee` smallint(6) DEFAULT NULL,
|
|
99
|
+
`FeeRate` float(2,2) DEFAULT NULL,
|
|
100
|
+
`PriceFBA` int(11) DEFAULT NULL,
|
|
101
|
+
`PriceSelf` int(11) DEFAULT NULL,
|
|
102
|
+
`PriceCart` int(11) DEFAULT NULL,
|
|
103
|
+
`NotExit` bit(1) NOT NULL,
|
|
104
|
+
`SettingFee` bit(2) NOT NULL,
|
|
105
|
+
`SettingProductItem` bit(2) NOT NULL,
|
|
106
|
+
`SettingJAN` bit(2) NOT NULL,
|
|
107
|
+
`PriceSetTime` bigint(20) NOT NULL,
|
|
108
|
+
`ProductItemSetTime` bigint(20) NOT NULL,
|
|
109
|
+
`FeeSetTime` bigint(20) NOT NULL,
|
|
110
|
+
`SellerNum` smallint(6) DEFAULT NULL,
|
|
111
|
+
`HadFBA` bit(1) NOT NULL,
|
|
112
|
+
`SettingMonorate` bit(2) NOT NULL,
|
|
113
|
+
`MonorateSetTime` bigint(20) NOT NULL,
|
|
114
|
+
`MonorateBuyNum` smallint(6) NOT NULL,
|
|
115
|
+
`TitleOpt` varchar(1024) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
|
116
|
+
`Danger` bit(1) NOT NULL,
|
|
117
|
+
`Claim` bit(1) NOT NULL,
|
|
118
|
+
`MonorateNoExitRate` float(3,3) NOT NULL,
|
|
119
|
+
`MonorateNoExitRateTotal` float(3,3) NOT NULL,
|
|
120
|
+
`SettingCategory` bit(2) NOT NULL,
|
|
121
|
+
`CategorySetTime` bigint(20) NOT NULL,
|
|
122
|
+
`CategoryHash` int(10) unsigned DEFAULT NULL,
|
|
123
|
+
`CategoryHash2` int(10) unsigned DEFAULT NULL,
|
|
124
|
+
`CategoryHash3` int(10) unsigned DEFAULT NULL,
|
|
125
|
+
`PriceUsedFBA` int(11) DEFAULT NULL,
|
|
126
|
+
`PriceUsedSelf` int(11) DEFAULT NULL,
|
|
127
|
+
`DHashSetTime` bigint(20) NOT NULL,
|
|
128
|
+
`DHash` varchar(1024) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
|
129
|
+
`RankingCategoryHash1` int(10) unsigned NOT NULL,
|
|
130
|
+
`RankingCategoryHash2` int(10) unsigned NOT NULL,
|
|
131
|
+
`RankingCategoryHash3` int(10) unsigned NOT NULL,
|
|
132
|
+
`Ranking1` int(11) NOT NULL,
|
|
133
|
+
`Ranking2` int(11) NOT NULL,
|
|
134
|
+
`Ranking3` int(11) NOT NULL,
|
|
135
|
+
`PricePreFBA` int(11) DEFAULT NULL,
|
|
136
|
+
`PricePreSelf` int(11) DEFAULT NULL,
|
|
137
|
+
`PricePreUsedFBA` int(11) DEFAULT NULL,
|
|
138
|
+
`PricePreUsedSelf` int(11) DEFAULT NULL,
|
|
139
|
+
`PricePreCart` int(11) DEFAULT NULL,
|
|
140
|
+
`SetTypeSer` smallint(5) unsigned DEFAULT NULL,
|
|
141
|
+
`NoCommunicationTick` bigint(20) NOT NULL,
|
|
142
|
+
`Width` int(10) unsigned DEFAULT NULL,
|
|
143
|
+
`Height` int(10) unsigned DEFAULT NULL,
|
|
144
|
+
`Lenght` int(10) unsigned DEFAULT NULL,
|
|
145
|
+
`Weight` int(10) unsigned DEFAULT NULL,
|
|
146
|
+
`SizeTypeSer` smallint(5) unsigned NOT NULL,
|
|
147
|
+
`JAN2` varchar(13) COLLATE utf8mb4_general_ci NOT NULL,
|
|
148
|
+
`JAN3` varchar(13) COLLATE utf8mb4_general_ci NOT NULL,
|
|
149
|
+
`JAN4` varchar(13) COLLATE utf8mb4_general_ci NOT NULL,
|
|
150
|
+
`JAN5` varchar(13) COLLATE utf8mb4_general_ci NOT NULL,
|
|
151
|
+
`Model` varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
|
152
|
+
`RelationTick` bigint(20) NOT NULL,
|
|
153
|
+
`FlagSer` bit(32) NOT NULL,
|
|
154
|
+
PRIMARY KEY (`ASIN`),
|
|
155
|
+
KEY `price_idx` (`PriceSetTime`),
|
|
156
|
+
KEY `monoratetime_idx` (`MonorateSetTime`),
|
|
157
|
+
KEY `rank_idx` (`Ranking1`),
|
|
158
|
+
KEY `monorate_idx` (`MonorateBuyNum`),
|
|
159
|
+
KEY `fee_monorate_idx` (`FeeSetTime`,`MonorateBuyNum`),
|
|
160
|
+
KEY `jansindex` (`JAN`),
|
|
161
|
+
KEY `jan2index` (`JAN2`),
|
|
162
|
+
KEY `jan3index` (`JAN3`),
|
|
163
|
+
KEY `jan4index` (`JAN4`),
|
|
164
|
+
KEY `jan5index` (`JAN5`),
|
|
165
|
+
KEY `relationtick_idx` (`RelationTick`),
|
|
166
|
+
KEY `keepasort` (`MonorateSetTime`,`Ranking1`),
|
|
167
|
+
KEY `jan_relation_index` (`MonorateBuyNum`,`FlagSer`,`RelationTick`),
|
|
168
|
+
KEY `noc_idx` (`NoCommunicationTick`,`NotExit`,`SettingProductItem`,`ASIN`),
|
|
169
|
+
KEY `dhash_get_idx` (`MonorateBuyNum`,`ASIN`,`FlagSer`),
|
|
170
|
+
KEY `keepafilter` (`NotExit`,`MonorateSetTime`,`Ranking1`,`FlagSer`),
|
|
171
|
+
KEY `category_idx` (`CategorySetTime`,`FlagSer`,`NotExit`),
|
|
172
|
+
KEY `product_idx` (`ProductItemSetTime`,`FlagSer`,`NotExit`),
|
|
173
|
+
KEY `fee_idx` (`FeeSetTime`,`FlagSer`,`NotExit`),
|
|
174
|
+
KEY `dhash_idx` (`DHashSetTime`,`FlagSer`),
|
|
175
|
+
KEY `ureteru_get_index` (`MonorateBuyNum`,`SettingProductItem`,`FlagSer`,`ASIN`)
|
|
176
|
+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci |------+
|
|
177
|
+
```
|
|
178
|
+
```ここに言語を入力
|
|
179
|
+
//analyzetime テーブル
|
|
180
|
+
| analyzetime | CREATE TABLE `analyzetime` (
|
|
181
|
+
`ASIN` varchar(10) COLLATE utf8mb4_general_ci NOT NULL,
|
|
182
|
+
`SiteName` varchar(256) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
|
|
183
|
+
`Tick` bigint(20) DEFAULT NULL,
|
|
184
|
+
PRIMARY KEY (`ASIN`,`SiteName`),
|
|
185
|
+
KEY `tick_idx` (`Tick`),
|
|
186
|
+
KEY `asin_idx` (`ASIN`),
|
|
187
|
+
KEY `tick_and_site_idx` (`Tick`,`SiteName`),
|
|
188
|
+
KEY `all_idx` (`Tick`,`ASIN`,`SiteName`)
|
|
104
189
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci |
|
|
105
|
-
+-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|
|
106
190
|
```
|
1
force index for joinについての説明を修正
title
CHANGED
|
File without changes
|
body
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
whereした2つのテーブルをinner joinしたいのですがインデックスが使用できません。
|
|
2
2
|
それぞれwhereに使用するカラムと結合条件のカラムを合わせた複合インデックスを作成しているのですがexplainしてもusing indexにならず非常に低速です。
|
|
3
3
|
force indexしてもインデックスだけで解決されず、Using join buffer (Block Nested Loop) となって速度が出ません。
|
|
4
|
-
joinに使用する列
|
|
4
|
+
joinに使用する列のインデックスを作成し、force index for joinの併用も試しましたが高速化できませんでした。
|
|
5
5
|
どうすればインデックスを使用して高速化できるのでしょうか。
|
|
6
6
|
|
|
7
7
|
### クエリとexplain
|