目錄
Join的類型
cross join建立結果集時會根據on條件篩選結果集合
首頁 資料庫 mysql教程 MySQL Join使用原理是什麼

MySQL Join使用原理是什麼

May 26, 2023 am 10:07 AM
mysql join

    Join的類型

    • left join,以左表為驅動表,以左表作為結果集基礎,連接右表的資料補齊至結果集中

    MySQL Join使用原理是什麼

    • right join,以右表為驅動表,以右表為結果集基礎,連接左表的資料補齊到結果集中

    MySQL Join使用原理是什麼

    • #inner join,結果集取兩個表的交集

    MySQL Join使用原理是什麼

    • full join,結果會集取兩個表的並集

    • mysql沒有full join,union取代

      union與union all的區別為,union會去重

    MySQL Join使用原理是什麼

    #cross join 笛卡爾積
    • 如果不使用where條件則結果集為兩個關聯表行的乘積
    與,的區別為,

    cross join建立結果集時會根據on條件篩選結果集合

    • #straight_join
    • 嚴格依照SQL順序指定磁碟機表,

      左表是驅動

      Join原理

      這句話可以這樣重寫:可以將其本質理解為嵌套循環的運算,其中外層for迴圈驅動表,而內層for迴圈則是被驅動表。根據連接組成資料的策略可以分為三種演算法。
    • Simpe Nested-Loop Join

    連接例如有A表,B表,兩個表JOIN的話會拿著A表的連表條件一條一條在B表循環,匹配A表和B表相同的id 放入結果集,這種效率是最低的。

    • Index Nested-Loop Join

      #執行流程(磁碟掃描)
    • 從表t1中讀入一行資料R;
    • 從資料行R中,取出a欄位到表t2裡進行

      樹搜尋查找

      取出表t2中滿足條件的行,跟R組成一行,作為結果集的一部分;
    重複執行步驟1到3,直到表t1的末尾循環結束。

    • 而對於每一行R,根據a字段去表t2查找,走的是樹搜尋過程。

    • Block Nested-Loop Join

    • #mysql使用了一個叫

      join buffe

      r的緩衝區去減少循環次數,這個緩衝區預設是256KB,可以透過指令show variables like 'join_%'查看
    • 其具體的做法是,將第一個表中符合條件的資料列一次查詢到緩衝區中,然後遍歷一次第二個表,並逐一和緩衝區的所有值比較,將比較結果加入結果集中
    #########只有當JOIN類型為ALL, index,rang或是index_merge的時候才會使用join buffer,可以透過explain查看SQL的查詢類型。 ###############Join最佳化############為了最佳化join演算法採用Index nested-loop join演算法,在連線欄位上建立索引欄位## ##########使用資料量小的表去驅動資料量大的表#############增加join buffer size的大小(一次快取的資料越多,那麼外層表格循環的次數就越少)############注意連接欄位的隱含轉換與字元編碼,避免索引失效#########

    以上是MySQL Join使用原理是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    AI Hentai Generator

    AI Hentai Generator

    免費產生 AI 無盡。

    熱門文章

    R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.最佳圖形設置
    3 週前 By 尊渡假赌尊渡假赌尊渡假赌
    R.E.P.O.如果您聽不到任何人,如何修復音頻
    4 週前 By 尊渡假赌尊渡假赌尊渡假赌
    WWE 2K25:如何解鎖Myrise中的所有內容
    1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    MySQL:初學者的數據管理易用性 MySQL:初學者的數據管理易用性 Apr 09, 2025 am 12:07 AM

    MySQL適合初學者使用,因為它安裝簡單、功能強大且易於管理數據。 1.安裝和配置簡單,適用於多種操作系統。 2.支持基本操作如創建數據庫和表、插入、查詢、更新和刪除數據。 3.提供高級功能如JOIN操作和子查詢。 4.可以通過索引、查詢優化和分錶分區來提升性能。 5.支持備份、恢復和安全措施,確保數據的安全和一致性。

    忘記數據庫密碼,能在Navicat中找回嗎? 忘記數據庫密碼,能在Navicat中找回嗎? Apr 08, 2025 pm 09:51 PM

    Navicat本身不存儲數據庫密碼,只能找回加密後的密碼。解決辦法:1. 檢查密碼管理器;2. 檢查Navicat的“記住密碼”功能;3. 重置數據庫密碼;4. 聯繫數據庫管理員。

    mysql:簡單的概念,用於輕鬆學習 mysql:簡單的概念,用於輕鬆學習 Apr 10, 2025 am 09:29 AM

    MySQL是一個開源的關係型數據庫管理系統。 1)創建數據庫和表:使用CREATEDATABASE和CREATETABLE命令。 2)基本操作:INSERT、UPDATE、DELETE和SELECT。 3)高級操作:JOIN、子查詢和事務處理。 4)調試技巧:檢查語法、數據類型和權限。 5)優化建議:使用索引、避免SELECT*和使用事務。

    navicat premium怎麼創建 navicat premium怎麼創建 Apr 09, 2025 am 07:09 AM

    使用 Navicat Premium 創建數據庫:連接到數據庫服務器並輸入連接參數。右鍵單擊服務器並選擇“創建數據庫”。輸入新數據庫的名稱和指定字符集和排序規則。連接到新數據庫並在“對象瀏覽器”中創建表。右鍵單擊表並選擇“插入數據”來插入數據。

    MySQL和SQL:開發人員的基本技能 MySQL和SQL:開發人員的基本技能 Apr 10, 2025 am 09:30 AM

    MySQL和SQL是開發者必備技能。 1.MySQL是開源的關係型數據庫管理系統,SQL是用於管理和操作數據庫的標準語言。 2.MySQL通過高效的數據存儲和檢索功能支持多種存儲引擎,SQL通過簡單語句完成複雜數據操作。 3.使用示例包括基本查詢和高級查詢,如按條件過濾和排序。 4.常見錯誤包括語法錯誤和性能問題,可通過檢查SQL語句和使用EXPLAIN命令優化。 5.性能優化技巧包括使用索引、避免全表掃描、優化JOIN操作和提升代碼可讀性。

    phpmyadmin怎麼打開 phpmyadmin怎麼打開 Apr 10, 2025 pm 10:51 PM

    可以通過以下步驟打開 phpMyAdmin:1. 登錄網站控制面板;2. 找到並點擊 phpMyAdmin 圖標;3. 輸入 MySQL 憑據;4. 點擊 "登錄"。

    navicat怎麼新建連接mysql navicat怎麼新建連接mysql Apr 09, 2025 am 07:21 AM

    可在 Navicat 中通過以下步驟新建 MySQL 連接:打開應用程序並選擇“新建連接”(Ctrl N)。選擇“MySQL”作為連接類型。輸入主機名/IP 地址、端口、用戶名和密碼。 (可選)配置高級選項。保存連接並輸入連接名稱。

    navicat如何執行sql navicat如何執行sql Apr 08, 2025 pm 11:42 PM

    在 Navicat 中執行 SQL 的步驟:連接到數據庫。創建 SQL 編輯器窗口。編寫 SQL 查詢或腳本。單擊“運行”按鈕執行查詢或腳本。查看結果(如果執行查詢的話)。

    See all articles