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

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

 更新時間:2013年04月19日 15:14:50   作者:  
在某些情況下,如果明知道查詢結(jié)果只有一個,SQL語句中使用LIMIT 1會提高查詢效率,感興趣的朋友可以了解下哈,希望對你優(yōu)化mysql查詢有所幫助
在某些情況下,如果明知道查詢結(jié)果只有一個,SQL語句中使用LIMIT 1會提高查詢效率。
例如下面的用戶表(主鍵id,郵箱,密碼):
復(fù)制代碼 代碼如下:

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

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

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

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

相關(guān)文章

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

    MySQL鎖等待超時問題的原因和解決方案(Lock wait timeout exceed

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

    Python版Mysql爆破小腳本

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

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

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

    深入mysql慢查詢設(shè)置的詳解

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

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

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

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

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

    MySQL gtid的具體使用

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

    Mysql中正則表達式Regexp常見用法及說明

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

    mysql 安全管理詳情

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

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

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

最新評論

台江县| 四平市| 塘沽区| 临汾市| 敦煌市| 曲周县| 甘谷县| 普兰县| 成都市| 浙江省| 高台县| 长宁区| 盈江县| 武陟县| 浙江省| 墨脱县| 呼伦贝尔市| 通榆县| 新乐市| 马尔康县| 祥云县| 香河县| 潼关县| 开封市| 古田县| 哈巴河县| 云南省| 朔州市| 电白县| 车致| 大邑县| 南郑县| 湘西| 濮阳县| 东兰县| 西贡区| 哈尔滨市| 卫辉市| 田阳县| 白朗县| 宝兴县|