首頁  >  文章  >  資料庫  >  MySQL多表關聯on與where速度源碼比較分析

MySQL多表關聯on與where速度源碼比較分析

WBOY
WBOY轉載
2023-06-02 13:49:061235瀏覽

先說結論

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

實驗1:不存在不等記錄

我們有兩張表,分別是member和member_class,資料結構如下圖,其中member.class_id 和member_class.id 是關聯欄位

MySQL多表關聯on與where速度源碼比較分析

MySQL多表關聯on與where速度源碼比較分析

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

查全表

MySQL多表關聯on與where速度源碼比較分析

為了實驗更相對準確,我們對每個結果查詢20次:

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

0.253, 0.256, 0.256, 0.252, 0.257, 0.252, 0.260, 0.265, 0.253, 0. , 0.257, 0.243, 0.250, 0.252, 0.252, 0.255, 0.284

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

#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.25, 0. 1, 0.247, 0.250

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

實驗2:存在不等記錄MySQL多表關聯on與where速度源碼比較分析

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

如下圖:

MySQL多表關聯on與where速度源碼比較分析

我們繼續查詢全表測試:

##########能看出來非常明顯的差距,LEFT JOIN由於存在大量不等記錄,出現大量的NULL值,此時中間表查詢效率變得更低,而選擇WHERE查詢能夠在查詢時自動過濾不等記錄。 ######所以查詢時間也更快一些。 ###

以上是MySQL多表關聯on與where速度源碼比較分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除