MySQL 臨時表詳細說明

目錄

MySQL 臨時表詳細說明

1. 定義

2. 核心特性

3. 創建與使用

4. 典型應用場景

5. 生命周期管理

6. 注意事項

7. 性能優化建議


MySQL 臨時表詳細說明

1. 定義

臨時表是存儲在內存或磁盤上的臨時性數據表,僅在當前數據庫會話中存在。會話結束時自動銷毀,適合存儲中間計算結果或臨時數據集。其名稱以#開頭(如#TempTable)。

2. 核心特性
  • 會話隔離性:每個會話獨立維護自己的臨時表,互不可見。
  • 自動清理:會話結束(連接斷開)時自動刪除。
  • 存儲位置
    • 內存引擎(如MEMORY):小數據量時高效
    • 磁盤存儲(默認):數據量大時自動切換
  • 作用域
    • 局部臨時表(#前綴):僅當前會話可見
    • 全局臨時表(##前綴):所有會話可見,但會話結束后自動刪除
3. 創建與使用

創建語法

-- 局部臨時表
CREATE TEMPORARY TABLE #EmployeeTemp (id INT PRIMARY KEY,name VARCHAR(50),salary DECIMAL(10,2)
);-- 全局臨時表
CREATE TEMPORARY TABLE ##GlobalTemp (log_id INT,message TEXT
);

數據操作

-- 插入數據
INSERT INTO #EmployeeTemp VALUES (1, '張三', 8500.00);-- 查詢
SELECT * FROM #EmployeeTemp WHERE salary > 8000;-- 關聯其他表
SELECT e.name, d.department 
FROM #EmployeeTemp e
JOIN departments d ON e.dept_id = d.id;

4. 典型應用場景
  • 復雜查詢優化:存儲子查詢結果,避免重復計算
    CREATE TEMPORARY TABLE #HighSalary 
    SELECT * FROM employees WHERE salary > 10000;SELECT d.name, COUNT(*) 
    FROM #HighSalary h
    JOIN departments d ON h.dept_id = d.id
    GROUP BY d.name;
    

  • 批量數據處理:ETL過程中的臨時存儲
  • 會話級緩存:存儲用戶會話的中間狀態(如購物車數據)
  • 遞歸查詢:實現層次結構遍歷
    WITH RECURSIVE cte AS (SELECT id, parent_id FROM categories WHERE parent_id IS NULLUNION ALLSELECT c.id, c.parent_id FROM categories cJOIN cte ON c.parent_id = cte.id
    )
    SELECT * INTO #Hierarchy FROM cte;  -- 存儲遞歸結果
    

5. 生命周期管理
階段行為
創建CREATE TEMPORARY TABLE 執行時生成
會話活躍期可正常讀寫,支持索引、觸發器等對象
會話結束自動刪除表結構及數據
異常中斷連接意外斷開時由MySQL自動清理
6. 注意事項
  • 命名沖突:避免與持久表同名,臨時表優先級更高
  • 事務行為
    • 未提交事務中創建的臨時表,回滾時不會刪除
    • 數據修改操作(INSERT/UPDATE)可回滾
  • 復制環境
    • 主從復制中,臨時表操作不寫入二進制日志(binlog)
    • 級聯刪除場景需顯式處理外鍵約束
  • 內存限制
    • 超過tmp_table_size(默認16MB)時轉為磁盤存儲
    • 監控語句:SHOW STATUS LIKE 'Created_tmp%';
  • 連接池影響:連接復用可能導致臨時表殘留,需顯式DROP TEMPORARY TABLE
7. 性能優化建議
  1. 索引策略
    CREATE INDEX idx_salary ON #EmployeeTemp(salary);  -- 臨時表索引
    

  2. 控制規模:僅保留必要字段,避免SELECT * INTO
  3. 替代方案
    • 簡單查詢優先使用子查詢或CTE(公共表表達式)
    • 頻繁使用考慮內存表(ENGINE=MEMORY

最佳實踐:在存儲過程中使用臨時表后顯式刪除,避免長期連接的內存累積:

DROP TEMPORARY TABLE IF EXISTS #EmployeeTemp;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/92603.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/92603.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/92603.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入解析 Apache APISIX 在微服務網關中的性能優化實踐指南

深入解析 Apache APISIX 在微服務網關中的性能優化實踐指南 文章類型:性能優化實踐指南 技術領域:微服務架構 —— API 網關 文章結構:原理深度解析型 目標讀者:有一定微服務與運維基礎的后端開發工程師一、技術背景與應用場景 隨…

【Spring Boot刷新上下文核心流程詳解】

Spring Boot 刷新上下文核心流程詳解 一、前言 在使用 Spring Boot 啟動應用時,控制臺會打印出一大串日志,其中最核心的啟動動作之一就是 刷新上下文(refresh)。 refresh 方法不僅負責 Bean 的創建與初始化,還涉及監…

關于過濾器(Filter)的學習

過濾器(Filter)概述 過濾器是 Java Servlet 規范的一部分,用于在請求到達 Servlet 之前或響應返回客戶端之前攔截請求和響應。它可以用于執行各種任務,如請求預處理、響應后處理、身份驗證、日志記錄等。 過濾器的作用 預處理請…

Spring AI 打造智能面試人實戰

Spring AI人工智能面試機器人相關實例 以下是與Spring AI人工智能面試機器人相關的實用案例,涵蓋技術實現、功能設計及常見問題解決方案,按應用場景分類呈現: 技術集成案例 調用Hugging Face模型庫處理專業領域問題 通過Spring Security添加面試會話身份驗證 結合WebSoc…

QT 程序發布時候調用自定義動態庫

1、需要在pro文件中增加下面的內容:QMAKE_LFLAGS "-Wl,-rpath,\\$$ORIGIN\" QMAKE_LFLAGS "-Wl,-rpath,\\$$ORIGIN/lib\" QMAKE_LFLAGS "-Wl,-rpath,\\$$ORIGIN/../lib\"其中lib為動態庫的文件夾名稱,可以根據自己喜好…

SpringBoot學習日記 Day6:解鎖微服務與高效任務處理

一、開篇:從單體到微服務的思維轉變剛開始接觸微服務時,我總習慣把所有功能寫在一個項目里。直到項目越來越臃腫,每次修改都要全量部署,才意識到微服務架構的價值。今天我們就來探索SpringBoot在微服務場景下的強大能力&#xff0…

機械學習--DBSCAN 算法(附實戰案例)

DBSCAN 算法詳解DBSCAN(Density-Based Spatial Clustering of Applications with Noise,帶噪聲的基于密度的空間聚類應用)是一種經典的密度聚類算法,由 Martin Ester 等人于 1996 年提出。與 K-means 等基于距離的聚類算法不同&am…

【昇騰】基于RK3588 arm架構Ubuntu22.04系統上適配Atlas 200I A2加速模塊安裝EP模式下的驅動固件包_20250808

一、背景 1.1 主要的硬件是:1.2 主要的軟件是: RK3588跑操作系統Atlas 200I A2加速模塊作為EP模式關鍵參數版本說明CPU架構aarch64OS版本Ubuntu 22.04.5 LTSkernel版本5.10.198 二、適配 準備固件run包文件:Ascend-hdk-310b-npu-firmware_7.…

如何在 VS Code 中進行 `cherry-pick`

cherry-pick 是 Git 的一個功能,允許你選擇某個 commit 并將其應用到當前分支,而無需合并整個分支。在 VS Code 中,你可以通過 內置的 Git 功能 或 終端 來完成 cherry-pick。方法 1:使用 VS Code 的 Git 圖形界面(GUI…

STM32CubeMX(十三)FatFs文件系統(SPI驅動W25Qxx)

目錄 一、知識點 1. 什么是Fatfs文件系統? 2. Fatfs操作系統控制流程 二、實戰操作 1.CubeMX配置 2. 配置串口以及SPI 3. 修改功能映射接口 4. 添加測試代碼 5. 實驗現象 在完成本章之前需要完成一些基礎配置,詳情查看下面的文章。 STM32CubeMX(二)新建工…

【前端后端部署】將前后端項目部署到云服務器

更多筆記在這里? 全棧之路: https://gitee.com/oldbe/notes 【跳轉到】 覺得有用請點個 star ,非常感謝! 現在AI太強大,開發個人產品的門檻和成本太低了,只要你有好的想法都可以很快速的開發一款產品 1.…

vue如何監聽localstorage

在Vue中監聽localStorage的變化可以通過幾種方式實現,但需要注意的是,localStorage本身不提供原生的事件監聽機制,如DOM元素的MutationObserver。不過,你可以通過一些間接的方法來監聽localStorage的變化。方法1:使用w…

灰狼算法+四模型對比!GWO-CNN-LSTM-Attention系列四模型多變量時序預測

摘要:聚劃算!大對比!灰狼算法四模型對比!GWO-CNN-LSTM-Attention系列四模型多變量時序預測,該代碼特別適合需要橫向對比不同深度學習模型性能的時序預測場景,研究者可通過參數快速適配不同預測需求&#xf…

冒泡排序實現以及優化

一,冒泡排序說明冒泡排序是從第一個元素開始和后面一個元素進行判斷是否滿足左小右大,如果不滿足就交換位置,再拿第二個和第三個進行上述操作一直到第n-1和第n個。經過上述的一輪操作就可以把第一個最大值放到最右邊,在進行n輪上述…

水下管道巡檢機器人cad【10張】三維圖+設計說明書

摘 要 水下管道是水下油氣管道的生命線,水下管道巡檢機器人可以替代人工完成水下油氣管道狀態的實時監測和數據反饋,有助于工作人員對水下油氣管道的運行情況實時掌握。 本文完成了水下管道巡檢機器人的總體設計,采用三維設計軟件Solidwor…

SQL(結構化查詢語言)的四大核心分類

這張圖展示了 SQL(結構化查詢語言)的四大核心分類,分別對應不同的數據庫操作場景。以下是逐類解析:1. 數據操作語言(DML:Data Manipulation Language)作用:用于操作數據庫中的數據&a…

AI(1)-神經網絡(正向傳播與反向傳播)

🍋🍋AI學習🍋🍋🔥系列專欄: 👑哲學語錄: 用力所能及,改變世界。 💖如果覺得博主的文章還不錯的話,請點贊👍收藏??留言📝支持一下博主…

嵌入式Linux學習 - 數據結構6

五、哈希表1. 哈希算法將數據通過哈希算法映射成一個鍵值,存取都在同一位置實現數據的高效存儲和查找將時間復雜度盡可能降低至O(1)2. 哈希碰撞多個數據通過哈希算法得到的鍵值相同,稱為產生哈希碰撞3. 哈希表構建哈希表存放0-100之間的數據將0 - 100之間…

GitHub 趨勢日報 (2025年08月07日)

📊 由 TrendForge 系統生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日報中的項目描述已自動翻譯為中文 📈 今日獲星趨勢圖 今日獲星趨勢圖1894nautilus_trader354stagehand315openai-cookbook263sim242ollama230prisma154v…

android 使用openimagelib OpenImage 實現點擊放大圖片,瀏覽

在 Android 中使用 OpenImageLib(假設這是一個開源圖片加載庫,類似于 Glide 或 Picasso)實現 點擊放大圖片并瀏覽 的功能,通常需要結合 圖片查看器庫(如 PhotoView)和 圖片加載庫(如 OpenImageLib)。以下是完整的實現方案: 1. 添加依賴 (1) 添加 OpenImageLib 依賴 …