mysql 學習15 SQL優化,插入數據優化,主鍵優化,order by優化,group by 優化,limit 優化,count 優化,update 優化

插入數據優化,

insert 優化,

????????批量插入(一次不超過1000條)

? ? ? ? 手動提交事務

????????主鍵順序插入

load 從本地一次插入大批量數據,

登陸時 mysql --local-infile -u root -p

load data local infile '/root/sql1.log' into table 'tb_user' fields terminated by ',' lines terminated by '\n';

從?'/root/sql1.log' 文件中,讀取加載數據,加載數據到?tb_user 這個表,每個字段用 逗號分隔,每一行用 換行回車 分隔。

通過 select? @@loacl_infile;查看是否打開可以批量插入數據的變量,

如果沒有打開,則通過 set??loacl_infile = 1; 打開該變量

主鍵優化,

我們看到 mysql innodb 中的 表數據 都是 根據主鍵順序組織存放的。

page 是 innoDB的最小管理。

在主鍵順序插入時,頁中數據的形式

頁分裂 - 在主鍵 亂序 插入時,頁中數據可能會引起 頁分裂

頁合并

原始數據

依次刪除 16,15,14,13 時

主鍵設計原則

主鍵長度 太長,輔助索引浪費更多的空間。

盡量順序插入,選擇使用 auto_incrment 避免 頁分裂。

order by優化,

?說白了,就是我們在 查詢到數據后,在排序的時候使用order by 后面的字段 也是需要有 索引的。

如果排序后面的字段有索引,那么 explain select 執行后,extra 后面會提示 using index,表明我們的排序是使用的? 索引完成的。

如果排序后面的字段沒有索引,則extra后面的提示是 using filesort,表明排序沒有使用索引。?

測試,發現 extra 后面說明的 using index?

創建age 和phone 的聯合索引, 默認情況下 age和phone 都會按照 升序 排序。

如果我們像要讓 age 按照 升序排序,讓 phone 按照降序排序,則,按照如下的寫法。

默認排序緩沖大小的值,在 變量 sort_buffer_size中存儲。如果查詢到的數據量就是很大,256k已經不夠用了,默認mysql 就會在磁盤文件中開辟空間,I/O就會很慢。因此我們可以 改動?sort_buffer_size的大小,避免在 磁盤文件中開辟空間。

group by 優化,

limit 優化,

count 優化,

簡單來說,count 優化是要自己計數的。

如果不優化,就使用count(*)計數,這個效率是最高的。

由于 id =24 沒有專業,因此 select count(prefession) from tb_user的值是23

也就是說,如果按照字段計數,如果該字段為null,則不會計數。

update 優化

這是啥意思呢? 我們假設 student 表有3條記錄

id? ?name? ? no

1? 張三豐? 2000100100

2 韋一笑? ?2000100105

3? 度小滿?2000100106

索引 只有 primary key? = id,

我們有兩個并行的事務,

一個按照id 更新 no,一個按照 name 更新 no

由于id 是有索引的,因此只會 鎖定? id =1 的這一行,

但是name沒有索引,會鎖定 整張表,

也就是下面說的,innoDB的韓所是針對索引加的鎖。

如果沒有索引,會變成整張表的 鎖。

應盡量避免將 整張表的鎖。

這會讓并行效率變的很低。

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

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

相關文章

達夢數據庫針對慢SQL,收集統計信息清除執行計劃緩存

前言:若遇到以下場景,大概率是SQL走錯了執行計劃: 1、一條SQL在頁面上查詢特別慢,但拿到數據庫終端執行特別快 2、一條SQL在某種檢索條件下查詢特別慢,但拿到數據庫終端執行特別快 此時,可以嘗試按照下述步…

使用JWT實現微服務鑒權

目錄 一、微服務鑒權 1、思路分析 2、系統微服務簽發token 3、網關過濾器驗證token 4、測試鑒權功能 前言: 隨著微服務架構的廣泛應用,服務間的鑒權與安全通信成為系統設計的核心挑戰之一。傳統的集中式會話管理在分布式場景下面臨性能瓶頸和擴展性…

廣西壯族自治區園區投促中心黨委書記陶德文率團到訪深蘭科技

2月16日,廣西壯族自治區園區投促中心黨委書記、主任,自治區園區辦黨組成員陶德文率團來到深蘭科技集團上海總部考察調研,并與深蘭科技集團創始人、董事長陳海波等集團管理層座談交流,雙方圍繞深蘭科技人工智能項目落地廣西的相關事…

基于UnrealEngine(UE5)的太空探索

視頻部分可參見:https://www.bilibili.com/video/BV1JWA8eSEVg/ 中國 天宮號 空間站 人造衛星可視化 星鏈衛星可視化 小行星分布及運動軌跡可視化 月球基地 可視化 八大行星軌道 太陽系宜居帶可視化 阿波羅8號拍攝的地球升起 谷神星模型及軌跡可視化 星座可視化 十…

WLAN無線2.4G/5G頻段劃分和可用信道

互聯網各領域資料分享專區(不定期更新): Sheet

使用 OpenTelemetry 和 Langtrace 的 Elastic 分發跟蹤基于 RAG 的聊天機器人

作者:來自 Elastic Bahubali Shetti 如何使用 Elastic 觀察基于 OpenAI RAG 的應用程序。使用 Langtrace 對應用程序進行檢測,收集日志、跟蹤、指標,并了解 LLM 在 Kubernetes 上使用 OpenTelemetry 的 Elastic Distributions 的運行情況。 目…

基于機器學習的水文數據采集預測與可視化分析系統

【機器學習】基于機器學習的水文數據采集預測與可視化分析系統(完整系統源碼開發筆記詳細部署教程)? 目錄 一、項目簡介二、項目界面展示三、項目視頻展示 一、項目簡介 系統采用Python及Flask框架構建Web服務端,結合PyMySQL與MySQL實現數據…

三甲醫院網絡架構與安全建設實戰

一、設計目標 實現醫療業務網/衛生專網/互聯網三網隔離 滿足等保2.0三級合規要求 保障PACS影像系統低時延傳輸 實現醫療物聯網統一接入管控 二、全網拓撲架構 三、網絡分區與安全設計 IP/VLAN規劃表 核心業務配置(華為CE6865) interface 100G…

MySQL如何解決幻讀?

目錄 一、什么是幻讀? 1.1 幻讀的定義 1.2 幻讀的示例 1.3 幻讀產生的原因? 1.4?讀已提交(Read Committed) 1.4.1 確定事務等級 1.4.2 非鎖定讀取 準備 示例 結論 1.4.3 鎖定讀取 準備 示例 分析 結論 1.5?可重…

Openssl之SM2加解密命令

### 1. 生成 SM2 私鑰openssl genpkey -algorithm EC \-pkeyopt ec_paramgen_curve:sm2 \-out sm2_private_key.pem### 2. 從私鑰導出 SM2 公鑰openssl pkey -in sm2_private_key.pem \-pubout \-out sm2_public_key.pem### 3. 使用 SM2 公鑰加密openssl pkeyutl -encrypt \-pu…

【含文檔+PPT+源碼】基于Python的圖書推薦系統的設計與實現

課程簡介: 本課程演示的是一款基于python的圖書推薦系統的設計與實現,主要針對計算機相關專業的正在做畢設的學生與需要項目實戰練習的 Python學習者。 1.包含:項目源碼、項目文檔、數據庫腳本、軟件工具等所有資料 2.帶你從零開始部署運行…

Nginx 安裝及配置教程(Windows)【安裝】

文章目錄 一、 Nginx 下載 1. 官網下載2. 其它渠道 二、 Nginx 安裝三、 配置四、 驗證五、 其它問題 1. 常用命令2. 跨域問題 軟件 / 環境安裝及配置目錄 一、 Nginx 下載 1. 官網下載 安裝地址:https://nginx.org/en/download.html 打開瀏覽器輸入網址 htt…

Spring Boot(8)深入理解 @Autowired 注解:使用場景與實戰示例

搞個引言 在 Spring 框架的開發中,依賴注入(Dependency Injection,簡稱 DI)是它的一個核心特性,它能夠讓代碼更加模塊化、可測試,并且易于維護。而 Autowired 注解作為 Spring 實現依賴注入的關鍵工具&…

DeepSeek教unity------Dotween

1、命名法 Tweener(補間器):一種控制某個值并對其進行動畫處理的補間。 Sequence(序列):一種特殊的補間,它不直接控制某個值,而是控制其他補間并將它們作為一個組進行動畫處理。 Tw…

【JAVA實戰】JAVA實現Excel模板下載并填充模板下拉選項數據

背景 有這樣一個場景:前端下載Excel模板,進行數據導入,這個下載模板過程需要經過后端接口去數據庫查詢數據進行某些列的下拉數據填充,下拉填充的數據過程中會出現錯誤String literals in formulas can’t be bigger than 255 cha…

【深度學習】計算機視覺(CV)-目標檢測-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目標檢測

1.什么是 DETR? DETR(DEtection TRansformer) 是 Facebook AI(FAIR)于 2020 年提出的 端到端目標檢測算法,它基于 Transformer 架構,消除了 Faster R-CNN、YOLO 等方法中的 候選框(…

IDEA + 通義靈碼AI程序員:快速構建DDD后端工程模板

作者:陳榮健 IDEA 通義靈碼AI程序員:快速構建DDD后端工程模板 在軟件開發過程中,一個清晰、可維護、可擴展的架構至關重要。領域驅動設計 (DDD) 是一種軟件開發方法,它強調將軟件模型與業務領域緊密結合,從而構建更…

責任鏈模式原理詳解和源碼實例以及Spring AOP攔截器鏈的執行源碼如何使用責任鏈模式?

前言 本文首先介紹了責任鏈的基本原理,并附帶一個例子說明責任鏈模式,確保能夠理解責任鏈的前提下,在進行Spring AOP執行責任鏈的源碼分析。責任鏈模式允許將多個處理對象連接成鏈,請求沿著鏈傳遞,直到被處理或結束。每…

React 與 Vue 對比指南 - 上

React 與 Vue 對比指南 - 上 本文將展示如何在 React 和 Vue 中實現常見功能&#xff0c;從基礎渲染到高級狀態管理 Hello 分別使用 react 和 vue 寫一個 Hello World&#xff01; react export default () > {return <div>Hello World!</div>; }vue <…

大模型開發實戰篇7:語音識別-語音轉文字

語音識別大模型&#xff0c;是人工智能領域的一項重要技術&#xff0c;它能夠將人類的語音轉換為文本。近年來&#xff0c;隨著深度學習技術的不斷發展&#xff0c;語音識別大模型取得了顯著的進展&#xff0c;并在各個領域得到了廣泛應用。 主流語音識別大模型 目前&#xf…