最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2013年04月19日 15:14:50   作者:  
在某些情況下,如果明知道查詢結(jié)果只有一個(gè),SQL語(yǔ)句中使用LIMIT 1會(huì)提高查詢效率,感興趣的朋友可以了解下哈,希望對(duì)你優(yōu)化mysql查詢有所幫助
在某些情況下,如果明知道查詢結(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這一列沒(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ù)制代碼 代碼如下:

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

相關(guān)文章

  • MySQL鎖等待超時(shí)問(wèn)題的原因和解決方案(Lock wait timeout exceeded; try restarting transaction)

    MySQL鎖等待超時(shí)問(wèn)題的原因和解決方案(Lock wait timeout exceed

    在數(shù)據(jù)庫(kù)開(kāi)發(fā)和管理中,鎖等待超時(shí)是一個(gè)常見(jiàn)而棘手的問(wèn)題,對(duì)于使用 MySQL 的應(yīng)用程序,尤其是采用 InnoDB 存儲(chǔ)引擎的場(chǎng)景,這一問(wèn)題更是屢見(jiàn)不鮮,本文給大家介紹了MySQL鎖等待超時(shí)問(wèn)題的原因和解決方案,需要的朋友可以參考下
    2024-11-11
  • Python版Mysql爆破小腳本

    Python版Mysql爆破小腳本

    本文給大家分享的是使用Python制作的MySQL在線用戶密碼的暴力破解腳本,非常的好用,有需要的小伙伴可以參考下
    2016-10-10
  • mysql 查詢數(shù)據(jù)庫(kù)響應(yīng)時(shí)長(zhǎng)的方法示例

    mysql 查詢數(shù)據(jù)庫(kù)響應(yīng)時(shí)長(zhǎng)的方法示例

    要查詢MySQL數(shù)據(jù)庫(kù)的響應(yīng)時(shí)長(zhǎng),通常我們需要測(cè)量查詢執(zhí)行的時(shí)間,本文主要介紹了mysql 查詢數(shù)據(jù)庫(kù)響應(yīng)時(shí)長(zhǎng)的方法示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • 深入mysql慢查詢?cè)O(shè)置的詳解

    深入mysql慢查詢?cè)O(shè)置的詳解

    本篇文章是對(duì)mysql慢查詢?cè)O(shè)置進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL5.7安裝過(guò)程并重置root密碼的方法(shell 腳本)

    MySQL5.7安裝過(guò)程并重置root密碼的方法(shell 腳本)

    由于 MySQL 5.7 版本的 root 密碼是首次啟動(dòng)時(shí)隨機(jī)生成的,并且還要求必須修改后才能使用。下面小編給大家分享使用shell 腳本完成安裝和設(shè)置新的 root 密碼的方法,一起看看吧
    2016-12-12
  • MySQL?8.0自增變量的持久化問(wèn)題小結(jié)

    MySQL?8.0自增變量的持久化問(wèn)題小結(jié)

    MySQL5.7中自增主鍵在重啟后會(huì)重置,而MySQL8.0中通過(guò)重做日志持久化自增變量,避免重啟后主鍵沖突,本文介紹MySQL?8.0自增變量的持久化問(wèn)題小結(jié),感興趣的朋友一起看看吧
    2024-11-11
  • MySQL gtid的具體使用

    MySQL gtid的具體使用

    本文詳細(xì)介紹了MySQL的GTID的概念、格式、相關(guān)參數(shù)以及生命周期,同時(shí)還講解了GTID的自動(dòng)定位、復(fù)制監(jiān)控與管理等功能,GTID是MySQL復(fù)制環(huán)境中的一種唯一標(biāo)識(shí),可以有效避免重復(fù)復(fù)制的現(xiàn)象,保持?jǐn)?shù)據(jù)一致,文章中還列舉了多個(gè)示例,感興趣的可以了解一下
    2024-10-10
  • Mysql中正則表達(dá)式Regexp常見(jiàn)用法及說(shuō)明

    Mysql中正則表達(dá)式Regexp常見(jiàn)用法及說(shuō)明

    這篇文章主要介紹了Mysql中正則表達(dá)式Regexp常見(jiàn)用法及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。
    2022-12-12
  • mysql 安全管理詳情

    mysql 安全管理詳情

    這篇文章主要介紹了mysql 安全管理,MySQL服務(wù)器的安全基礎(chǔ)是用戶應(yīng)該對(duì)他們需要的數(shù)據(jù)具有適當(dāng)?shù)脑L問(wèn)權(quán),既不能多也不能少,換句話說(shuō),用戶不能對(duì)過(guò)多的數(shù)據(jù)具有過(guò)多的訪問(wèn)權(quán),下面?zhèn)z看看文章詳細(xì)內(nèi)容吧
    2021-10-10
  • MySQL調(diào)優(yōu)之SQL查詢深度分頁(yè)問(wèn)題

    MySQL調(diào)優(yōu)之SQL查詢深度分頁(yè)問(wèn)題

    本文主要介紹了MySQL調(diào)優(yōu)之SQL查詢深度分頁(yè)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論

木里| 阿坝县| 平凉市| 韶关市| 衡南县| 望城县| 库尔勒市| 金川县| 六枝特区| 屏山县| 神池县| 友谊县| 嘉义市| 白山市| 马边| 交城县| 子长县| 大石桥市| 浑源县| 琼结县| 吉水县| 朝阳县| 江口县| 南召县| 始兴县| 西充县| 南漳县| 舒兰市| 康定县| 黄大仙区| 盐城市| 仁寿县| 富源县| 扎赉特旗| 盐边县| 柞水县| 吕梁市| 旌德县| 安丘市| 乡宁县| 酉阳|