欧美日韩精品在线,国内精品久久久久久久久,一级毛片恃级毛片直播,清纯唯美亚洲综合欧美色

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

編輯Tag賺U幣

推薦:Mysql高性能備份方案解決數(shù)據(jù)不間斷訪問(wèn)
備份特點(diǎn): 1、在大多數(shù)情況下,這種方式幾乎算得上是熱備。它無(wú)需關(guān)閉服務(wù),只需要設(shè)置只讀或者類似這樣的限制。 2、支持所有基于本地磁盤(pán)的存儲(chǔ)引擎,比如MYISAM、InnoDB和BDB,還支持Solid、PrimeXT和Faction。 3、備份速度最快,因?yàn)槟阒恍枰截愊嚓P(guān)的二進(jìn)制數(shù)據(jù)

在某些情況下,如果明知道查詢結(jié)果只有一個(gè),SQL語(yǔ)句中使用LIMIT 1會(huì)提高查詢效率。
例如下面的用戶表(主鍵id,郵箱,密碼):
復(fù)制代碼 代碼如下:m.dounai2.com

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這一列沒(méi)有加索引,會(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=?;
就不需要寫(xiě)成:
SELECT * FROM t_user WHERE id=? LIMIT 1;
二者效率沒(méi)有區(qū)別。
附上我做的實(shí)驗(yàn):
存儲(chǔ)過(guò)程生成100萬(wàn)條數(shù)據(jù):
復(fù)制代碼 代碼如下:m.dounai2.com

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ù)制代碼 代碼如下:m.dounai2.com

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

分享:設(shè)置mysql的sql_mode
author:skate time:2013/04/11 mysql的sql_mode合理設(shè)置 sql_mode是個(gè)很容易被忽視的變量,默認(rèn)值是空值,在這種設(shè)置下是可以允許一些非法操作的,比如允許一些非法數(shù)據(jù)的插入。在生產(chǎn)環(huán)境必須將這個(gè)值設(shè)置為嚴(yán)格模式,所以開(kāi)發(fā)、測(cè)試環(huán)境的數(shù)據(jù)庫(kù)也必須要設(shè)置,這樣

來(lái)源:模板無(wú)憂//所屬分類:MySQL教程/更新時(shí)間:2013-04-21
相關(guān)MySQL教程