java程序員進階:618大戰前夕,一條SQL引起的深思—MySQL優化

優化概述

  • 採起必定措施使變得優異。
  • 爲了更加優秀而「去其糟粕,取其精華」;
  • 爲了在某一方面更加出色而去其糟粕;
  • 爲了在某方面更優秀而放棄其餘不過重要的方面;
  • 使某人/某物變得更優秀的方法/技術等;
  • 在計算機算法領域,優化每每是指經過算法獲得要求問題的更優解

一個Sql引起的思考

image

這是個報表查詢的SQL,發現下載excel報表的時候特別慢,請你優化它面試

經常使用的優化方式

  1. 服務器硬件
  2. MySql服務器優化
  3. SQL自己優化
  4. 反範式設計優化
  5. 物理設計優化(字段類型、長度設計,存儲引擎選擇)
  6. 索引優化

反範式化設計

  1. 反範式化是針對範式化而言的
  2. 所謂得反範式化就是爲了性能和讀取效率得考慮而適當得對數據庫設計範式得要求進行違反
  3. 容許存在少許得冗餘,換句話來講反範式化就是使用空間來換取時間

三大範式

數據庫設計的第一大範式算法

  1. 數據庫表中的全部字段都只具備單一屬性
  2. 單一屬性的列是由基本數據類型所構成的
  3. 設計出來的表都是簡單的二維表

數據庫設計的第二大範式數據庫

要求表中只具備一個業務主鍵,也就是說符合第二範式的表不能存在非主鍵列只對部分主鍵的依賴關係服務器

數據庫設計的第三大範式數據結構

指每個非非主屬性既不部分依賴於也不傳遞依賴於業務主鍵,也就是在第二範式的基礎上相處了非主鍵對主鍵的傳遞依賴數據庫設計

物理設計

爲表中的字段選擇合適的數據類型性能

當一個列能夠選擇多種數據類型時學習

  1. 優先考慮數字類型
  2. 其次是日期、時間類型
  3. 最後是字符類型
  4. 對於相同級別的數據類型,應該優先選擇佔用空間小的數據類型

索引是什麼?

MySQL官方對索引的定義爲:索引(Index)是幫助MySQL高效獲取數據的數據結構。能夠獲得索引的本質:索引是數據結構。優化

最簡單的索引設計

image

稍微複雜點的索引

image

MySql中的索引

image

上面是數據表,一共有兩列七條記錄,最左邊的是數據記錄的物理地址

索引分類

image

基礎語法

image

本文到此結束!喜歡本文的朋友幫忙轉發和關注一下,感謝!

PS:本文完整視頻獲取地址:Java學習、面試;文檔、視頻資源免費獲取

相關文章
相關標籤/搜索