【MYSQL】mysql單表億級數據查詢優化處理

1、實踐表明mysql單表數據超過一億后,數據進行交并差效率會非常慢,所以這時候就要進行表的優化。

我這里主要是使用索引。

2、表字段精量精簡

查索引,建索引,刪索引語法

?--查看索引
-- SHOW INDEX FROM 表名;
-- 刪除索引
--ALTER TABLE 表名 DROP INDEX username_index;

--建索引
CREATE INDEX 索引名ON 表名(索引字段(10));

?--查看索引
-- SHOW INDEX FROM 表名;
-- 刪除索引
--ALTER TABLE 表名 DROP INDEX username_index;--建索引
CREATE INDEX 索引名ON 表名(索引字段(10));

3、mysql聚合函數大全

MySQL 提供了豐富的聚合函數,用于對一組值執行計算并返回單個值。以下是 MySQL 中常用的聚合函數及其用法:

基本聚合函數

1. COUNT()

  • 計算行數或非NULL值的數量

SELECT COUNT(*) FROM employees;  -- 計算總行數
SELECT COUNT(department_id) FROM employees;  -- 計算非NULL的department_id數量
SELECT COUNT(DISTINCT department_id) FROM employees;  -- 計算不同department_id的數量

2. SUM()

  • 計算數值列的總和

SELECT SUM(salary) FROM employees;
SELECT SUM(salary * 1.1) FROM employees;  -- 可以包含表達式

3. AVG()

  • 計算數值列的平均值

SELECT AVG(salary) FROM employees;
SELECT AVG(DISTINCT salary) FROM employees;  -- 計算不同值的平均值

4. MIN()

  • 返回列中的最小值

SELECT MIN(salary) FROM employees;
SELECT MIN(hire_date) FROM employees;  -- 也適用于日期

5. MAX()

  • 返回列中的最大值

SELECT MAX(salary) FROM employees;
SELECT MAX(hire_date) FROM employees;  -- 也適用于日期

高級聚合函數

6. GROUP_CONCAT()

  • 將多行值連接成一個字符串

SELECT department_id, GROUP_CONCAT(last_name) 
FROM employees 
GROUP BY department_id;-- 使用分隔符和排序
SELECT department_id, GROUP_CONCAT(last_name ORDER BY hire_date SEPARATOR ', ') 
FROM employees 
GROUP BY department_id;

7. STD() / STDDEV()

  • 計算總體標準差

SELECT STD(salary) FROM employees;

8. STDDEV_POP()

  • 計算總體標準差(同STD)

SELECT STDDEV_POP(salary) FROM employees;

9. STDDEV_SAMP()

  • 計算樣本標準差

SELECT STDDEV_SAMP(salary) FROM employees;

10. VAR_POP()

  • 計算總體方差

SELECT VAR_POP(salary) FROM employees;

11. VAR_SAMP()

  • 計算樣本方差

SELECT VAR_SAMP(salary) FROM employees;

12. VARIANCE()

  • 計算總體方差(同VAR_POP)

SELECT VARIANCE(salary) FROM employees;

統計聚合函數

13. BIT_AND()

  • 對二進制位執行AND操作

SELECT BIT_AND(flags) FROM permissions;

14. BIT_OR()

  • 對二進制位執行OR操作

SELECT BIT_OR(flags) FROM permissions;

15. BIT_XOR()

  • 對二進制位執行XOR操作

SELECT BIT_XOR(flags) FROM permissions;

分組函數

16. WITH ROLLUP

  • 添加小計和總計行

SELECT department_id, COUNT(*), AVG(salary)
FROM employees
GROUP BY department_id WITH ROLLUP;

窗口函數(MySQL 8.0+)

雖然嚴格來說不是聚合函數,但窗口函數常與聚合一起使用:

17. ROW_NUMBER()

SELECT employee_id, salary,ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank
FROM employees;

18. RANK()

SELECT employee_id, salary,RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;

19. DENSE_RANK()

SELECT employee_id, salary,DENSE_RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;

使用注意事項

  1. 聚合函數通常與?GROUP BY?子句一起使用

  2. 可以在?HAVING?子句中使用聚合函數進行過濾

  3. SELECT?列表中非聚合列必須出現在?GROUP BY?中

  4. 聚合函數會忽略?NULL?值(除了?COUNT(*)

  5. MySQL 5.7及以上版本對?GROUP BY?有更嚴格的SQL模式要求

性能優化建議

  1. 為?GROUP BY?和?ORDER BY?列創建索引

  2. 考慮使用?EXPLAIN?分析查詢執行計劃

  3. 對于大數據集,可能需要調整?group_concat_max_len?系統變量

  4. 在可能的情況下,限制聚合數據集的大小

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

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

相關文章

C++基礎:模擬實現vector(有存在深層次的淺拷貝問題)

目錄 引言 一、vector的基本框架 二、尾插push_back、reserve擴容、任意位置插入insert(增) 1.reserve擴容 2.push_back尾插 3.深層次的淺拷貝問題 4. 任意位置插入數據insert(會使迭代器失效) 三、構造、析構、拷貝構造函數 1.構造函數 1.1無…

【力扣】關于鏈表索引

怎么才能走到目標節點呢&#xff1f; 從9走到2&#xff0c;需要2步&#xff0c;他們的索引分別是&#xff1a;0&#xff0c;2 在for循環里&#xff1a;int i 0; i < 2; i i的范圍是【0&#xff0c;2&#xff09; 有&#xff1a;2 2 - 0 如果從虛擬頭節點開始走到2&#x…

C++ ODB框架詳解:現代C++對象關系映射解決方案

目錄 框架簡介安裝與配置基礎概念實體映射數據庫操作查詢操作高級功能性能優化最佳實踐 框架簡介 ODB&#xff08;Object-Relational Database&#xff09;是一個專為C設計的對象關系映射&#xff08;ORM&#xff09;框架&#xff0c;由CodeSynthesis公司開發。它提供了一種…

Ai書簽管理工具開發全記錄(一):項目總覽與技術藍圖

文章目錄 Ai書簽管理工具開發全記錄&#xff08;一&#xff09;&#xff1a;項目總覽與技術藍圖 ?1. 項目背景與核心價值 &#x1f4a1;1.1. 核心特點 2. 技術架構分析 &#x1f3d7;?功能架構全景圖典型工作流 3. 核心技術棧選擇 &#x1f6e0;?4. 預期使用功能說明 &#…

GUI 編程——python

GUI 編程核心概念 GUI&#xff08;圖形用戶界面&#xff0c;Graphical User Interface&#xff09; 是一種通過圖形元素&#xff08;窗口、按鈕、菜單等&#xff09;與用戶交互的應用程序形式&#xff0c;相比命令行界面更直觀易用。以下是學習 GUI 編程的基礎概念和流程&…

【Doris基礎】Apache Doris 基本架構深度解析:從存儲到查詢的完整技術演進

目錄 1 引言 2 Doris 架構全景圖 2 核心組件技術解析 2.1 Frontend 層&#xff08;FE&#xff09; 2.2 Backend 層&#xff08;BE&#xff09; 3 數據存儲與復制機制 3.1 存儲架構演進 3.2 副本復制策略 4 查詢處理全流程解析 4.1 查詢生命周期 5 高可用設計 5.1 F…

光電賦能低空場景,靈途科技助力無人機持續升級

2025 UASE 主題為“步入低空經濟新時代”的“2025第九屆世界無人機大會暨國際低空經濟與無人系統博覽會/第十屆深圳國際無人機展覽會”5月23日在深圳會展中心隆重開幕。本屆展會匯聚了全球800余家企業參展&#xff0c;展示5000多款無人機及系統設備&#xff0c;全面呈現低空經…

iOS QQ抽屜式導航的實現

QQ個人中心的側滑功能(通常稱為"抽屜式導航")可以通過以下幾種方式在iOS中實現&#xff1a; 主要實現方案 使用第三方庫 最快速的方式是使用成熟的第三方庫&#xff1a; SWRevealViewController&#xff1a;最流行的側滑菜單庫MMDrawerController&#xff1a;另一…

【Pandas】pandas DataFrame drop

Pandas2.2 DataFrame Reindexing selection label manipulation 方法描述DataFrame.add_prefix(prefix[, axis])用于在 DataFrame 的行標簽或列標簽前添加指定前綴的方法DataFrame.add_suffix(suffix[, axis])用于在 DataFrame 的行標簽或列標簽后添加指定后綴的方法DataFram…

長短期記憶網絡 (LSTM) 詳解:從原理到應用

一、引言&#xff1a;序列數據處理的挑戰? 在自然語言處理、語音識別、時間序列分析等領域&#xff0c;數據通常以序列形式存在&#xff0c;前后數據點之間存在依賴關系。傳統循環神經網絡 (RNN) 雖然能捕捉序列依賴&#xff0c;但存在嚴重的梯度消失 / 爆炸問題&#xff0c;…

三天掌握PyTorch精髓:從感知機到ResNet的快速進階方法論

本文較長&#xff0c;建議點贊收藏&#xff0c;以免遺失。更多AI大模型應用開發學習視頻及資料&#xff0c;盡在聚客AI學院。 一、分析式AI基礎與深度學習核心概念 1.1 深度學習三要素 數學基礎&#xff1a; f(x;W,b)σ(Wxb)(單層感知機) 1.2 PyTorch核心組件 張量操作示例…

Linux操作系統概述

一、操作系統的作用 1、五大基本功能 &#xff08;1&#xff09;進程和線程的管理&#xff1a;進程線程的狀態、控制、同步互斥、通信調度等 (2&#xff09;存儲管理&#xff1a;分配/回收、地址轉換、存儲保護等 (3&#xff09;文件管理&#xff1a;文件目錄、文件操作、磁盤…

Python爬蟲第22節- 結合Selenium識別滑動驗證碼實戰

目錄 一、引言 二、滑動驗證碼原理與反爬機制 2.1 驗證碼原理 2.2 反爬機制 三、工程實戰&#xff1a;滑動驗證碼識別全流程 3.1 工程準備 3.1.1 環境依賴 3.1.2 目標網站與驗證碼識別案例 3.2 核心破解流程 3.2.1 自動化打開網頁與登錄 3.2.2 獲取驗證碼圖片&#…

NSSCTF-[NISACTF 2022]huaji?

下載附件得到文件 放到kali里面看看 發現是一張圖片 用binwalk命令對其進行分離 發現需要密碼 用010打開圖片進行查看 對其進行解密 分別得到 ctf_NISA_2022 nisa_2022 發現ctf_NISA_2022是密碼 得到flag NSSCTF{Nls_FumYEnnOjy}

nt!CcGetVacbMiss函數分析之設置好nt!_VACB然后調用函數nt!SetVacb

第一部分&#xff1a;MmMapViewInSystemCache函數返回 Status MmMapViewInSystemCache (SharedCacheMap->Section, &Vacb->BaseAddress, &NormalOffset, …

Uniapp+UView+Uni-star打包小程序極簡方案

一、減少主包體積 主包污染源&#xff08;全局文件依賴&#xff09;勁量獨立導入 componentsstaticmain.jsApp.vueuni.css 分包配置缺陷&#xff0c;未配置manifest.json中mp-weixin節點 "usingComponents" : true,"lazyCodeLoading" : "requiredC…

Teigha應用——解析CAD文件(DWG格式)Teigha在CAD C#二次開發中的基本應用

Teigha是一款專為開發者設計的工具&#xff0c;其核心技術在于強大的API和豐富的功能集&#xff0c;提供了一系列工具和方法&#xff0c;使開發者能夠輕松地讀取、解析和操作DWG文件。它支持多種操作系統&#xff0c;能在處理大型DWG文件時保持高效性能&#xff0c;還可用于構建…

JavaWeb:SpringBoot Bean管理

獲取Bean Bean作用域 解決循環依賴方式 1.粗暴刪除依賴 2.打破依賴配置 3.使用lazy注解 引入第三方Bean

Lua 腳本在 Redis 中的運用-23(Lua 腳本語法教程)

在 Redis 中編寫和執行 Lua 腳本 Lua 腳本是在 Redis 中執行自定義邏輯的強大功能&#xff0c;可以直接在 Redis 服務器上執行。這減少了延遲&#xff0c;提高了性能&#xff0c;并能夠實現客戶端腳本難以或不可能實現的原子操作。通過在 Redis 中嵌入 Lua 腳本&#xff0c;您…

從零實現本地語音識別(FunASR)

FunASR 是達摩院開源的綜合性語音處理工具包&#xff0c;提供語音識別&#xff08;ASR&#xff09;、語音活動檢測&#xff08;VAD&#xff09;、標點恢復&#xff08;PUNC&#xff09;等全流程功能&#xff0c;支持多種主流模型&#xff08;如 Paraformer、Whisper、SenseVoic…