在某些情況下,如果明知道查詢結果只有乙個,sql語句中使用limit 1會提高查詢效率。
例如下面的使用者表(主鍵id,郵箱,密碼):
create table t_user(
id int primary key auto_increment,
email varchar(255),
password varchar(255)
);每個使用者的email是唯一的,如果使用者使用email作為使用者名稱登陸的話,就需要查詢出email對應的一條記錄。
select * from t_user where email=?;
上面的語句實現了查詢email對應的一條使用者資訊,但是由於email這一列沒有加索引,會導致全表掃瞄,效率會很低。
select * from t_user where email=? limit 1;
加上limit 1,只要找到了對應的一條記錄,就不會繼續向下掃瞄了,效率會大大提高。
limit 1適用於查詢結果為1條(也可能為0)會導致全表掃瞄的的sql語句。
如果email是索引的話,就不需要加上limit 1,如果是根據主鍵查詢一條記錄也不需要limit 1,主鍵也是索引。
例如:select * from t_user where id=?;
就不需要寫成:
select * from t_user where id=? limit 1;
二者效率沒有區別。
MySQL查詢優化 LIMIT 1避免全表掃瞄
在某些情況下,如果明知道查詢結果只有乙個,sql語句中使用limit 1會提高查詢效率。例如下面的使用者表 主鍵id,郵箱,密碼 create table t user id int primary key auto increment,email varchar 255 password varc...
MySQL查詢優化 LIMIT 1避免全表掃瞄
在某些情況下,如果明知道查詢結果只有乙個,sql語句中使用limit 1會提高查詢效率。例如下面的使用者表 主鍵id,郵箱,密碼 create table t user id int primary key auto increment,email varchar 255 password varc...
MySQL查詢優化 LIMIT 1避免全表掃瞄
在某些情況下,如果明知道查詢結果只有乙個,sql語句中使用limit 1會提高查詢效率。例如下面的使用者表 主鍵id,郵箱,密碼 create table t user id int primary key auto increment,email varchar 255 password varc...