欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL多表關(guān)聯(lián)on和where速度對(duì)比實(shí)測(cè)看誰(shuí)更快

 更新時(shí)間:2023年03月20日 10:42:53   作者:北鶴M  
這篇文章主要介紹了MySQL多表關(guān)聯(lián)on和where速度對(duì)比實(shí)測(cè)看誰(shuí)更快問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

今天發(fā)現(xiàn)有人在討論:兩張MySQL的數(shù)據(jù)表按照某一個(gè)字段進(jìn)行關(guān)聯(lián)的時(shí)候查詢,我們使用on和where哪種查詢方式更快。

百聞不如一見,我們來(lái)親自測(cè)試下。

先說結(jié)論

Where、對(duì)等查詢的join速度基本一致,不對(duì)等查詢時(shí)一般join更慢。

實(shí)驗(yàn)1:不存在不等記錄

我們有兩張表,分別是member和member_class,數(shù)據(jù)結(jié)構(gòu)如下圖,其中 member.class_id 和 member_class.id 是關(guān)聯(lián)字段

我們分別向兩張表寫入了20萬(wàn)條數(shù)據(jù),其中member.class_id 都一定存在于member_class.id中(不存在不等記錄)

查全表

為了實(shí)驗(yàn)更加相對(duì)準(zhǔn)確,我們對(duì)每條結(jié)果查詢20次:

where查詢耗時(shí)分別為(秒):

0.253, 0.256, 0.256, 0.252, 0.257, 0.252, 0.260, 0.265, 0.253, 0.252, 0.254, 0.257, 0.254, 0.257, 0.243, 0.250, 0.252, 0.252, 0.255, 0.284

on查詢耗時(shí)分別為(秒):

0.247, 0.260, 0.250, 0.246, 0.271, 0.247, 0.251, 0.247, 0.243, 0.247, 0.247, 0.245, 0.249, 0.246, 0.247, 0.253, 0.248, 0.254, 0.251, 0.247, 0.250

where查詢平均為0.2557s,on查詢平均為0.2498s;兩者基本一致,相差幾乎可以忽略。

實(shí)驗(yàn)2:存在不等記錄

我們新建一個(gè)member_v2表,其中class_id只有20%是member_class.id中存在的

如下圖:

我們繼續(xù)查詢?nèi)頊y(cè)試:

能看出來(lái)非常明顯的差距,LEFT JOIN由于存在大量不等記錄,出現(xiàn)大量的NULL值,此時(shí)中間表查詢效率變得更低,而選擇WHERE查詢能夠在查詢時(shí)自動(dòng)過濾不等記錄。

所以查詢時(shí)間也更快一些。

總結(jié)

在對(duì)等查詢過程中,ON的查詢更快;在不對(duì)等查詢時(shí),WHERE更快。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql不走索引的幾個(gè)問題小結(jié)

    mysql不走索引的幾個(gè)問題小結(jié)

    MySQL中不走索引的問題通常發(fā)生在查詢中使用了函數(shù),這會(huì)使索引失效,從而影響查詢性能,本文就介紹了mysql不走索引的幾個(gè)問題小結(jié),感興趣的可以了解一下
    2023-08-08
  • 如何保護(hù)MySQL中重要數(shù)據(jù)的方法

    如何保護(hù)MySQL中重要數(shù)據(jù)的方法

    在日常的工作中,保護(hù)數(shù)據(jù)免受未授權(quán)用戶的侵犯是系統(tǒng)管理員特別關(guān)心的問題。如果你目前用的是MySQL,就可以使用一些方便的功能來(lái)保護(hù)系統(tǒng),來(lái)大大減少機(jī)密數(shù)據(jù)被未授權(quán)用戶訪問的風(fēng)險(xiǎn)
    2011-10-10
  • MySQL中Order By多字段排序規(guī)則代碼示例

    MySQL中Order By多字段排序規(guī)則代碼示例

    這篇文章主要介紹了MySQL中Order By多字段排序規(guī)則代碼示例,小編覺得挺不錯(cuò)的,這里給大家分享下,需要的朋友可以參考。
    2017-10-10
  • MySQL打印死鎖日志的方法步驟

    MySQL打印死鎖日志的方法步驟

    本文主要介紹了MySQL打印死鎖日志的方法步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 詳解MySQL多版本并發(fā)控制機(jī)制(MVCC)源碼

    詳解MySQL多版本并發(fā)控制機(jī)制(MVCC)源碼

    MVCC,即多版本并發(fā)控制(Multi-Version Concurrency Control)指的是,通過版本鏈維護(hù)一個(gè)數(shù)據(jù)的多個(gè)版本,使得讀寫操作沒有沖突,可保證不同事務(wù)讀寫、寫讀操作并發(fā)執(zhí)行,提高系統(tǒng)性能
    2021-06-06
  • MYSQL數(shù)據(jù)插入之返回自增主鍵ID的方法詳解

    MYSQL數(shù)據(jù)插入之返回自增主鍵ID的方法詳解

    這篇文章主要介紹了MYSQL數(shù)據(jù)插入之返回自增主鍵ID的方法詳解,mysql中的insert插入之后會(huì)有返回值,返回的是影響的行數(shù),也就是說,成功插入一條數(shù)據(jù)之后返回的是1,失敗則返回0,那么,很多時(shí)候我們都想要得到最后插入的id值,需要的朋友可以參考下
    2023-10-10
  • mysql kill進(jìn)程后出現(xiàn)killed死鎖問題及解決

    mysql kill進(jìn)程后出現(xiàn)killed死鎖問題及解決

    這篇文章主要介紹了mysql kill進(jìn)程后出現(xiàn)killed死鎖問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 深入理解Mysql事務(wù)隔離級(jí)別與鎖機(jī)制問題

    深入理解Mysql事務(wù)隔離級(jí)別與鎖機(jī)制問題

    MySQL默認(rèn)的事務(wù)隔離級(jí)別是可重復(fù)讀,用Spring開發(fā)程序時(shí),如果不設(shè)置隔離級(jí)別默認(rèn)用MySQL設(shè)置的隔離級(jí)別,如果Spring設(shè)置了就用已設(shè)置的隔離級(jí)別,本文重點(diǎn)給大家介紹Mysql事務(wù)隔離級(jí)別與鎖機(jī)制的相關(guān)知識(shí),一起看看吧
    2021-09-09
  • MySQL DELETE語(yǔ)法使用詳細(xì)解析

    MySQL DELETE語(yǔ)法使用詳細(xì)解析

    此文章主要講述的是MySQL DELETE語(yǔ)法的詳細(xì)解析,以及一些在實(shí)際操作中值得我們大家注意的相關(guān)事項(xiàng)的描述,以下就是正文的主要內(nèi)容
    2013-03-03
  • MySQL給字符串加一個(gè)高效索引的實(shí)現(xiàn)

    MySQL給字符串加一個(gè)高效索引的實(shí)現(xiàn)

    本文主要介紹了MySQL給字符串加一個(gè)高效索引的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評(píng)論