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
如何你測量過性能嗎?你的結果是什麼?數據庫將在內部執行一些緩存,所以如果您背靠背運行相同或相似的查詢,第二個查詢將處於優勢,因爲它可能會觸及緩存。 – nolt2232 2012-02-19 07:03:56
解釋tblData中的select id,其中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 2012-02-19 07:16:31
解釋從tblData中選擇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 2012-02-19 07:19:33