0
次のクエリ違いは何ですか? idが主キーmysqlクエリが異なる、パフォーマンスが異なる
1, select id from tbl_xxx WHERE 2708 <= id <= 1562755185;
2, select id from tbl_xxx WHERE id> = 2708 and id <= 1562755185;
3, select id from tbl_xxx WHERE id between 2708 and 1562755185;
である私は、性能が異なっていることがわかったが、私はなぜか分からないのですか?
explain select id from tblData WHERE id >= 2708 and id <= 1562755185 ORDER BY id asc LIMIT 652000, 1000\G;
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tblData
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: NULL
rows: 30461948
Extra: Using where; Using index
explain select id from tblData WHERE 2708 <= id <= 1562755185 ORDER BY id asc LIMIT 652000, 1000\G; *************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tblData
type: index
possible_keys: NULL
key: PRIMARY
key_len: 4
ref: NULL
rows: 653000
Extra: Using where; Using index
をパフォーマンスを測定しましたか、結果は何ですか?データベースは内部的にいくつかのキャッシングを行います。したがって、同じか類似したクエリーを実行すると、キャッシュにヒットする可能性が高いため、2番目のクエリーが有利になります。 – nolt2232
tblDataからのselect idの説明where id> = 2708、id <= 1562755185 ORDER BY id asc LIMIT 652000、1000 \ G; ID:1 SELECT_TYPE:SIMPLE 表:tblData タイプ:範囲 possible_keys:PRIMARY キー:PRIMARY key_lenに:4 REF:NULL 行:30461948 エキストラ:使用。インデックスを使用する – Sam
tblDataのselect select id WHERE 2708 <= id <= 1562755185 ORDER BY id asc LIMIT 652000、1000 \ G; ID:1 SELECT_TYPE:SIMPLE 表:tblData タイプ:指数 possible_keys:NULL キー:PRIMARY key_lenに:4 REF:NULL 行:653000 エキストラ:使用。インデックスの使用 – Sam