資料庫系列 - 5: SQL 相關小知識(?)

更新於 發佈於 閱讀時間約 3 分鐘

作為這系列(暫時性的)最後一小節,我就將其他小知識一同彙整在這裡吧~

清空資料表

一般來說最簡單的方法是用 DELETE FROM <你的資料表>; 這條指令,雖然方便但是實際上效能很差、速度很慢,也容易觸發問題。相比之下,可以依序使用以下的指令去處理,整體上效能會快速很多:

  • 刪除外鍵: ALTER TABLE <你的資料表> DROP FOREIGN KEY <外鍵>;
  • 清空表格: TRUNCATE TABLE <你的資料表>;
  • 重新添加外鍵: ALTER TABLE <你的資料表> ADD CONSTRAINT <外鍵> FOREIGN KEY (主鍵) REFERENCES <你的資料表(主鍵)>;

如此一來,在清理大數據的資料庫時會很明顯的速度提升喔。

多表時,取得其中一表的最新資料

概念上來說,只需要額外 join 自己的最新那筆資料即可。

舉例來說,如果我有甲乙兩張表,彼此用欄位 order_id 關聯,而甲裡面有個訂單編號 num 的欄位。我現在只想取甲裡面最新每個顧客最新一筆訂單,並且符合其他條件的資料。

SELECT DISTINCT 甲.order_id FROM 甲 left join (SELECT order_id, MAX(num) maxnum FROM 甲 GROUP BY order_id) 丙 on ... left join 乙... WHERE 條件…

另外,記得中間要用 Group by 統整成一筆資料喔!

各部門大量資料的總和與可能的問題

這個是之前面試時碰到的問題,剛好看到網路上有各式各樣的回答,就順手整理一下答案了。

  1. 由於需要區分各部門,所以需要下 Group by 導致時間變長,大量資料可能需要1分鐘以上。
  2. 程式面來說,可以用非同步方法先讀取資料到陣列中再進行處理
  3. 資料庫面來說,可以設置 cache 以及 index (針對要 Group by 的欄位)
  4. 商業邏輯面上來說,可以限制總和的時間區間等等

評斷 SQL 語句的效能

一般來說,我們寫出的 SQL 語句都沒有太大的效能差異,很多只是0.1、0.2秒的差距而已,不過如果要一直重複處理、或是真的遇到大量資料時,SQL 寫得好不好可能就真的會有幾秒鐘甚至幾分鐘的差異了,那該怎麼做呢?

除了交給 ChatGPT 幫你修改 SQL 以外,你也可以用 explain 指令去確認效能,用法也很簡單,直接在你原本的 SQL 語句前面加上 explain ,在輸出那邊就會有幾個項目顯示給你看,至於細節這邊就先不多作介紹了。

啊對了,記得我們在資料庫系列 - 2: 索引這集裡提到的,SQL搜尋時記得盡量不要用 not in 喔!這是因為用 not in 就沒有 index 的效果了喔~

參考資料

  1. https://stackoverflow.com/questions/44063719/group-by-max-date-and-id
  2. https://medium.com/judys-database-sharing/mysql-explain效能分析應用-一-9a8bdbd4f346
留言
avatar-img
留言分享你的想法!
avatar-img
林柏宇的沙龍
2會員
48內容數
test
林柏宇的沙龍的其他內容
2025/05/04
本文詳細介紹了 RabbitMQ 的基本概念、架構以及其在現代系統中的重要性。RabbitMQ 作為一套開源的訊息佇列服務,旨在有效管理通訊流,增強系統穩定性和擴展性。透過描述佇列、交換器及消費者等核心組件的功能,並探討其在微服務和事件驅動架構中的應用。
Thumbnail
2025/05/04
本文詳細介紹了 RabbitMQ 的基本概念、架構以及其在現代系統中的重要性。RabbitMQ 作為一套開源的訊息佇列服務,旨在有效管理通訊流,增強系統穩定性和擴展性。透過描述佇列、交換器及消費者等核心組件的功能,並探討其在微服務和事件驅動架構中的應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
看更多
你可能也想看
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
沙龍一直是創作與交流的重要空間,這次 vocus 全面改版了沙龍介面,就是為了讓好內容被好好看見! 你可以自由編排你的沙龍首頁版位,新版手機介面也讓每位訪客都能更快找到感興趣的內容、成為你的支持者。 改版完成後可以在社群媒體分享新版面,並標記 @vocus.official⁠ ♥️ ⁠
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
每年4月、5月都是最多稅要繳的月份,當然大部份的人都是有機會繳到「綜合所得稅」,只是相當相當多人還不知道,原來繳給政府的稅!可以透過一些有活動的銀行信用卡或電子支付來繳,從繳費中賺一點點小確幸!就是賺個1%~2%大家也是很開心的,因為你們把沒回饋變成有回饋,就是用卡的最高境界 所得稅線上申報
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
全球科技產業的焦點,AKA 全村的希望 NVIDIA,於五月底正式發布了他們在今年 2025 第一季的財報 (輝達內部財務年度為 2026 Q1,實際日曆期間為今年二到四月),交出了打敗了市場預期的成績單。然而,在銷售持續高速成長的同時,川普政府加大對於中國的晶片管制......
Thumbnail
已經存在在table裡面的那些record做更新。 ※ 語法 UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, … [WHERE
Thumbnail
已經存在在table裡面的那些record做更新。 ※ 語法 UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, … [WHERE
Thumbnail
商業簡報不僅僅是呈現數據,更需要深入瞭解數據分析及有效的工具運用。本文探討於Excel中使用不同函數來改善數據處理效率,包括IF、IFS、VLOOKUP、XLOOKUP及INDEX與MATCH的結合,幫助商業人士更好地從數據中提取洞見,助力業務增值,學習優化數據分析過程,讓您的商業簡報更具影響力。
Thumbnail
商業簡報不僅僅是呈現數據,更需要深入瞭解數據分析及有效的工具運用。本文探討於Excel中使用不同函數來改善數據處理效率,包括IF、IFS、VLOOKUP、XLOOKUP及INDEX與MATCH的結合,幫助商業人士更好地從數據中提取洞見,助力業務增值,學習優化數據分析過程,讓您的商業簡報更具影響力。
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
Thumbnail
※ 別名: 目的在於提高SQL查詢的可讀性和簡潔性。 ※ 別名有兩種: Column Alias(列別名):在查詢結果中的某一列,取一個臨時的新名字。 Table Alias(表別名):給查詢中的表取一個短暫的新名字。 ※ Column Alias ※ 為什麼需要 Column A
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
Thumbnail
※ 什麼是WHERE? 使用 WHERE來設定條件,可以幫助我們縮小查詢結果的範圍,取得想要的結果。 ※ 語法: ※ 解析順序: From:先看是哪一張table→table裡面符合Where指定條件的record→再看Select指定的是那些欄位→再根據那個欄位進行排序。 ※ 使⽤⽅
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
你是否曾經遇到這樣的情況?手上有一張表格,需要根據某個欄位進行分類,但表格又很繁雜,如果手動一個個查找,就需要花費大量時間才能找到想要的資料,這樣實在是太沒效率又容易眼花。 今天,我就來教你一個FILTER 函數快速分類技巧,讓你輕鬆掌握數據,節省時間。
Thumbnail
你是否曾經遇到這樣的情況?手上有一張表格,需要根據某個欄位進行分類,但表格又很繁雜,如果手動一個個查找,就需要花費大量時間才能找到想要的資料,這樣實在是太沒效率又容易眼花。 今天,我就來教你一個FILTER 函數快速分類技巧,讓你輕鬆掌握數據,節省時間。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News