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

MySQL多表關(guān)聯(lián)on和where速度對比實測看誰更快

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

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

百聞不如一見,我們來親自測試下。

先說結(jié)論

Where、對等查詢的join速度基本一致,不對等查詢時一般join更慢。

實驗1:不存在不等記錄

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

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

查全表

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

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

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查詢耗時分別為(秒):

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;兩者基本一致,相差幾乎可以忽略。

實驗2:存在不等記錄

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

如下圖:

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

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

所以查詢時間也更快一些。

總結(jié)

在對等查詢過程中,ON的查詢更快;在不對等查詢時,WHERE更快。

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

相關(guān)文章

  • MySQL創(chuàng)建數(shù)據(jù)庫并支持中文字符的操作方法

    MySQL創(chuàng)建數(shù)據(jù)庫并支持中文字符的操作方法

    這篇文章主要介紹了MySQL創(chuàng)建數(shù)據(jù)庫并支持中文字符的操作方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具體一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 幾個常見的MySQL的可優(yōu)化點歸納總結(jié)

    幾個常見的MySQL的可優(yōu)化點歸納總結(jié)

    這篇文章主要介紹了幾個常見的MySQL的可優(yōu)化點歸納總結(jié),包括在編程時處理索引、分頁以及數(shù)據(jù)類型時可用到的地方,需要的朋友可以參考下
    2015-05-05
  • mysql中TIMESTAMPDIFF案例詳解

    mysql中TIMESTAMPDIFF案例詳解

    這篇文章主要介紹了mysql中TIMESTAMPDIFF案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 詳解mysql 組合查詢

    詳解mysql 組合查詢

    這篇文章主要介紹了詳解mysql 組合查詢的的相關(guān)資料,幫助大家更好的理解和使用MySQL數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-12-12
  • Mysql使用sum()函數(shù)返回null的問題詳解

    Mysql使用sum()函數(shù)返回null的問題詳解

    MySQL的Sum()函數(shù)是用來找出所有記錄的一個字段的總和,下面這篇文章主要給大家介紹了關(guān)于Mysql使用sum()函數(shù)返回null的問題,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-01-01
  • SQL?Group?By分組后如何選取每組最新的一條數(shù)據(jù)

    SQL?Group?By分組后如何選取每組最新的一條數(shù)據(jù)

    經(jīng)常在分組查詢之后,需要的是分組的某行數(shù)據(jù),例如更新時間最新的一條數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于SQL?Group?By分組后如何選取每組最新的一條數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • Linux下MySql 1036 錯誤碼解決(1036: Table ''xxxx'' is read only)

    Linux下MySql 1036 錯誤碼解決(1036: Table ''xxxx'' is read only)

    我們在進(jìn)行數(shù)據(jù)庫搬家的時候,經(jīng)常會遇到(1036: Table 'xxxx' is read only)的問題,字面意思很明確,就是數(shù)據(jù)庫只有讀權(quán)限,無寫權(quán)限,那么我們來分享下我的處理辦法
    2014-07-07
  • Mysql 原生語句中save or update 的寫法匯總

    Mysql 原生語句中save or update 的寫法匯總

    這篇文章主要介紹了Mysql 原生語句中save or update 的寫法匯總,非常詳細(xì),需要的朋友可以參考下
    2015-03-03
  • MySQL進(jìn)行表之間關(guān)聯(lián)更新的實現(xiàn)方法

    MySQL進(jìn)行表之間關(guān)聯(lián)更新的實現(xiàn)方法

    在實際編程工作或運維實踐中,對MySQL數(shù)據(jù)庫表進(jìn)行關(guān)聯(lián)更新是一種比較常見的應(yīng)用場景,針對這樣的業(yè)務(wù)場景,我們來看看有什么方法可以實現(xiàn)關(guān)聯(lián)更新,需要的朋友可以參考下
    2023-10-10
  • mysql字符串格式化方式

    mysql字符串格式化方式

    這篇文章主要介紹了mysql字符串格式化方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08

最新評論

陵水| 东兰县| 当阳市| 黔江区| 青川县| 高陵县| 香港 | 嵩明县| 阿拉善右旗| 孟津县| 科尔| 福泉市| 太白县| 安义县| 新营市| 平罗县| 平和县| 靖边县| 黑龙江省| 定兴县| 遵义市| 镶黄旗| 鲁甸县| 湖南省| 成安县| 南澳县| 神木县| 乐平市| 赫章县| 清苑县| 兰西县| 太康县| 吉隆县| 连云港市| 神木县| 潞城市| 济阳县| 吴堡县| 花莲市| 图们市| 兴安县|