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

質問編集履歴

3

式インデックスの検証を行ったので追記

2020/12/13 16:05

投稿

yonotsui
yonotsui

スコア28

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を間違えた

2020/12/13 16:05

投稿

yonotsui
yonotsui

スコア28

title CHANGED
File without changes
body CHANGED
@@ -89,18 +89,102 @@
89
89
 
90
90
  ### create table
91
91
  ```ここに言語を入力
92
- +-----------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
93
- | dhashdiff | CREATE TABLE `dhashdiff` (
94
- `SiteImgUrl` varbinary(2083) NOT NULL,
95
- `DHashDif` smallint(5) unsigned NOT NULL,
96
- `SetTime` bigint(19) unsigned NOT NULL,
97
- `ASIN` varbinary(10) NOT NULL,
98
- `SiteName` varchar(64) COLLATE utf8mb4_general_ci NOT NULL,
99
- PRIMARY KEY (`SiteImgUrl`,`ASIN`,`SiteName`),
100
- KEY `image_asin` (`ASIN`,`SiteImgUrl`),
101
- KEY `settime_index` (`SetTime`),
102
- KEY `asin` (`ASIN`),
103
- KEY `analyze_join_index` (`SetTime`,`SiteName`)
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についての説明を修正

2020/12/11 17:04

投稿

yonotsui
yonotsui

スコア28

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