2つのカラム「FeeSetTime」「MonorateBuyNum」を不等号でwhereしています。
カラムはそれぞれインデックスを作成しているため片方だけ利用する場合は1秒かからないのですが、併用すると1分近くかかります。
現在テーブルの行数は700万行ほどあり、これから1億以上に増やす予定です。
ですので改善できなければ運用できません。
どうすればクエリの速度を改善できるのかご教授いただけないでしょうか。
バージョン:8.0.18
クエリ
select ASIN from asin where FeeSetTime<637379791894140198&& MonorateBuyNum>=15 order by FeeSetTime ASC limit 20; ※orderを使用しなくても速度に差は出ません カラムと比較している値はその時の用途によって変えるので一意的ではありません。
テーブル構造
+-------------------------+----------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------------------+----------------------+------+-----+---------+-------+ | ASIN | varchar(10) | NO | PRI | NULL | | | JAN | varchar(13) | YES | | NULL | | | Title | varchar(1024) | YES | | NULL | | | ImageUrl | varchar(2048) | YES | | NULL | | | FixFee | smallint(6) | YES | | NULL | | | FeeRate | float(2,2) | YES | | NULL | | | PriceFBA | int(11) | YES | | NULL | | | PriceSelf | int(11) | YES | | NULL | | | PriceCart | int(11) | YES | | NULL | | | NotExit | bit(1) | NO | | NULL | | | SettingFee | bit(2) | NO | | NULL | | | SettingProductItem | bit(2) | NO | | NULL | | | SettingJAN | bit(2) | NO | | NULL | | | PriceSetTime | bigint(20) | NO | MUL | NULL | | | ProductItemSetTime | bigint(20) | NO | MUL | NULL | | | FeeSetTime | bigint(20) | NO | MUL | NULL | | | SellerNum | smallint(6) | YES | | NULL | | | HadFBA | bit(1) | NO | | NULL | | | SettingMonorate | bit(2) | NO | | NULL | | | MonorateSetTime | bigint(20) | NO | MUL | NULL | | | MonorateBuyNum | smallint(6) | NO | MUL | NULL | | | TitleOpt | varchar(1024) | YES | | NULL | | | Danger | bit(1) | NO | | NULL | | | Claim | bit(1) | NO | | NULL | | | MonorateNoExitRate | float(3,3) | NO | | NULL | | | MonorateNoExitRateTotal | float(3,3) | NO | | NULL | | | SettingCategory | bit(2) | NO | | NULL | | | CategorySetTime | bigint(20) | NO | | NULL | | | CategoryHash | int(10) unsigned | YES | | NULL | | | CategoryHash2 | int(10) unsigned | YES | | NULL | | | CategoryHash3 | int(10) unsigned | YES | | NULL | | | PriceUsedFBA | int(11) | YES | | NULL | | | PriceUsedSelf | int(11) | YES | | NULL | | | DHashSetTime | bigint(20) | NO | MUL | NULL | | | DHash | varchar(1024) | YES | | NULL | | | RankingCategoryHash1 | int(10) unsigned | YES | | NULL | | | RankingCategoryHash2 | int(10) unsigned | YES | | NULL | | | RankingCategoryHash3 | int(10) unsigned | YES | | NULL | | | Ranking1 | int(11) | YES | MUL | NULL | | | Ranking2 | int(11) | YES | | NULL | | | Ranking3 | int(11) | YES | | NULL | | | PricePreFBA | int(11) | YES | | NULL | | | PricePreSelf | int(11) | YES | | NULL | | | PricePreUsedFBA | int(11) | YES | | NULL | | | PricePreUsedSelf | int(11) | YES | | NULL | | | PricePreCart | int(11) | YES | | NULL | | | SetTypeSer | smallint(5) unsigned | YES | | NULL | | | NoCommunicationTick | bigint(20) | NO | MUL | NULL | | | Width | int(10) unsigned | YES | | NULL | | | Height | int(10) unsigned | YES | | NULL | | | Lenght | int(10) unsigned | YES | | NULL | | | Weight | int(10) unsigned | YES | | NULL | | | SizeTypeSer | smallint(5) unsigned | NO | | NULL | | | JAN2 | varchar(13) | YES | | NULL | | | JAN3 | varchar(13) | YES | | NULL | | | JAN4 | varchar(13) | YES | | NULL | | | JAN5 | varchar(13) | YES | | NULL | | +-------------------------+----------------------+------+-----+---------+-------+
###インデックス
+-------+------------+------------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression | +-------+------------+------------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | asin | 0 | PRIMARY | 1 | ASIN | A | 6484142 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | noc_idx | 1 | NoCommunicationTick | A | 9573 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | price_idx | 1 | PriceSetTime | A | 57374 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | product_idx | 1 | ProductItemSetTime | A | 139095 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | fee_idx | 1 | FeeSetTime | A | 51695 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | dhash_idx | 1 | DHashSetTime | A | 375445 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | monoratetime_idx | 1 | MonorateSetTime | A | 428457 | NULL | NULL | | BTREE | | | YES | NULL | | asin | 1 | rank_idx | 1 | Ranking1 | A | 178598 | NULL | NULL | YES | BTREE | | | YES | NULL | | asin | 1 | monorate_idx | 1 | MonorateBuyNum | A | 198 | NULL | NULL | | BTREE | | | YES | NULL | +-------+------------+------------------+--------------+---------------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
###explain
+----+-------------+-------+------------+-------+----------------------+---------+---------+------+---------+----------+------------------------------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+-------+----------------------+---------+---------+------+---------+----------+------------------------------------+ | 1 | SIMPLE | asin | NULL | range | fee_idx,monorate_idx | fee_idx | 8 | NULL | 3242510 | 4.92 | Using index condition; Using where | +----+-------------+-------+------------+-------+----------------------+---------+---------+------+---------+----------+------------------------------------+
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。