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 秒かかりました。こちらの方が高速です。
すべてのコマンドはほぼ同じ行を返します。