MySQL查詢優化 LIMIT 1避免全表掃瞄

2022-08-29 09:57:11 字數 768 閱讀 1190

在某些情況下,如果明知道查詢結果只有乙個,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...