mysql> desc ads_common;
+--------------+-----------------------+------+--- --+--------------------------------+----------------+
| | フィールド | フィールド タイプ | ヌル | キー | キー | デフォルト | エクストラ |
+--------------+-----------------------+------+--- --+--------------------------------+----------------+
| | ads_id | bigint(20) 符号なし | いいえ | PRI | ヌル | auto_increment |
| | ユーザー ID | bigint(20) 符号なし | いいえ | マル | ヌル | | |
| | ウェブサイトの種類 | enum('グループ','ユーザー') | いいえ | マル | ヌル | | |
| | website_id | bigint(20) 符号なし | いいえ | | | ヌル | | |
| | サブグループ ID | bigint(20) 符号なし | いいえ | | | ヌル | | |
| | country_id | smallint(5) 符号なし | いいえ | マル | ヌル | | |
| | type_id | int(10) 符号なし | いいえ | マル | ヌル | | |
| | 電話 | int(11) | いいえ | | | ヌル | | |
| | 携帯電話 | int(10) 符号なし | いいえ | | | ヌル | | |
| | cat_id | int(10) 符号なし | いいえ | マル | ヌル | | |
| | ブランド ID | mediumint(8) 符号なし | いいえ | マル | ヌル | | |
| | モデル ID | mediumint(8) 符号なし | いいえ | マル | ヌル | | |
| | エリア ID | int(10) 符号なし | いいえ | マル | ヌル | | |
| | is_offering | tinyint(1) | いいえ | マル | 1 | | |
| | 価格 | int(11) | いいえ | マル | ヌル | | |
| | item_status | tinyint(3) 符号なし | いいえ | マル | ヌル | | |
| | add_time | タイムスタンプ | いいえ | マル | CURRENT_TIMESTAMP | | |
| | 質問番号 | smallint(5) 符号なし | いいえ | | | ヌル | | |
| | is_stop | tinyint(1) | いいえ | マル | 0 | | |
+--------------+-----------------------+------+--- --+--------------------------------+----------------+
type_id,country_id,is_top 複数列インデックスと type_id 単一インデックスがあります。約 180245 行の ads_common テーブル。
1.最初のクエリ コマンド
SELECT c.ads_id FROM ads_common AS c
WHERE c.type_id IN (185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241)
AND c.country_id=226 AND is_stop=0 ORDER BY c.ads_id DESC
180,047 行が見つかりました。0.0026 秒かかりました
2. 2 番目のクエリ コマンド
SELECT c.ads_id FROM ads_common AS c
WHERE c.type_id=187
AND c.country_id =226 AND is_stop=0 ORDER BY c.ads_id DESC
180,044 行が見つかりました。これには 0.2335 秒かかりました
異なるコマンドは「type_id IN (..187..)」と「type_id=187」の 2 つだけですが、なぜコマンド 2 は 1 より遅いのですか?
コマンド 2 を次のように変更した場合:
SELECT c.ads_id FROM ads_common AS c
WHERE c.type_id IN (185, 187)
AND c.country_id =226 AND is_stop =0 ORDER BY c.ads_id DESC
180,044 行が見つかりました。これには 0.0007 秒かかりました。こちらの方が高速です。
SELECT c.ads_id FROM ads_common AS c
WHERE c.type_id IN (187)
AND c.country_id =226 AND is_stop =0 ORDER BY c.ads_id DESC
180,044 行が見つかりました。これには 0.2267 秒かかりました。こちらの方が高速です。
すべてのコマンドはほぼ同じ行を返します。