国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

MySQL查詢優(yōu)化:LIMIT 1避免全表掃描提高查詢效率

2024-07-24 12:48:37
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在某些情況下,如果明知道查詢結(jié)果只有一個(gè),SQL語(yǔ)句中使用LIMIT 1會(huì)提高查詢效率。
例如下面的用戶表(主鍵id,郵箱,密碼):
復(fù)制代碼 代碼如下:

create table t_user(
id int primary key auto_increment,
email varchar(255),
password varchar(255)
);

每個(gè)用戶的email是唯一的,如果用戶使用email作為用戶名登陸的話,就需要查詢出email對(duì)應(yīng)的一條記錄。
SELECT * FROM t_user WHERE email=?;
上面的語(yǔ)句實(shí)現(xiàn)了查詢email對(duì)應(yīng)的一條用戶信息,但是由于email這一列沒有加索引,會(huì)導(dǎo)致全表掃描,效率會(huì)很低。
SELECT * FROM t_user WHERE email=? LIMIT 1;
加上LIMIT 1,只要找到了對(duì)應(yīng)的一條記錄,就不會(huì)繼續(xù)向下掃描了,效率會(huì)大大提高。
LIMIT 1適用于查詢結(jié)果為1條(也可能為0)會(huì)導(dǎo)致全表掃描的的SQL語(yǔ)句。
如果email是索引的話,就不需要加上LIMIT 1,如果是根據(jù)主鍵查詢一條記錄也不需要LIMIT 1,主鍵也是索引。
例如:
SELECT * FROM t_user WHERE id=?;
就不需要寫成:
SELECT * FROM t_user WHERE id=? LIMIT 1;
二者效率沒有區(qū)別。
附上我做的實(shí)驗(yàn):
存儲(chǔ)過(guò)程生成100萬(wàn)條數(shù)據(jù):
復(fù)制代碼 代碼如下:

BEGIN
DECLARE i INT;
START TRANSACTION;
SET i=0;
WHILE i<1000000 DO
INSERT INTO t_user VALUES(NULL,CONCAT(i+1,'@xxg.com'),i+1);
SET i=i+1;
END WHILE;
COMMIT;
END

查詢語(yǔ)句
復(fù)制代碼 代碼如下:

SELECT * FROM t_user WHERE email='222@xxg.com'; 耗時(shí)0.56 s
SELECT * FROM t_user WHERE email='222@xxg.com' LIMIT 1; 耗時(shí)0.00 s

您可能感興趣的文章:

MySQL查詢優(yōu)化之explain的深入解析mysql嵌套查詢和聯(lián)表查詢優(yōu)化方法Mysql使用索引實(shí)現(xiàn)查詢優(yōu)化MySQL查詢優(yōu)化:連接查詢排序limit(join、order by、limit語(yǔ)句)介紹mysql數(shù)據(jù)庫(kù)查詢優(yōu)化 mysql效率MySQL查詢優(yōu)化:連接查詢排序淺談MySQL慢查詢優(yōu)化之慢查詢?nèi)罩痉治龅膶?shí)例教程mysql limit查詢優(yōu)化分析php+mysql查詢優(yōu)化簡(jiǎn)單實(shí)例MySQL查詢優(yōu)化:用子查詢代替非主鍵連接查詢實(shí)例介紹淺談MySQL中的子查詢優(yōu)化技巧MySQL查詢優(yōu)化--調(diào)整內(nèi)部變量的詳解美團(tuán)網(wǎng)技術(shù)團(tuán)隊(duì)分享的MySQL索引及慢查詢優(yōu)化教程總結(jié)MySQL建表、查詢優(yōu)化的一些實(shí)用小技巧MySQL查詢優(yōu)化之索引的應(yīng)用詳解MySQL查詢優(yōu)化的5個(gè)實(shí)用技巧Mysql Limit 分頁(yè)查詢優(yōu)化詳解30個(gè)mysql千萬(wàn)級(jí)大數(shù)據(jù)SQL查詢優(yōu)化技巧詳解
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 马边| 科尔| 南通市| 靖宇县| 北碚区| 新津县| 遂平县| 全椒县| 深水埗区| 米易县| 宁陵县| 灌阳县| 萝北县| 巴东县| 青州市| 岑巩县| 栾城县| 南陵县| 许昌市| 昆明市| 蓝山县| 永州市| 徐州市| 永泰县| 闽侯县| 乌拉特中旗| 朝阳市| 龙游县| 大同市| 元谋县| 炎陵县| 新龙县| 北海市| 高陵县| 屏南县| 宁远县| 定南县| 右玉县| 元谋县| 江西省| 元阳县|