帶你快速搞定Mysql優化

2022-09-27 05:51:08 字數 1693 閱讀 9951

目錄

select[distinct]  

from  

join(如left join)  

on  

where  

group by  

h**ing  

union  

order by  

limit

執行順序:from where聚h**ing order limit

1、from 先做表連線

2、where 進行條件限制

3、然後做聚合 group by

4、然後做 h**ing 過濾

5、然後對結果進行排序

6、最後限制數量 limit

sql 的查詢執行順序我想有些人還是記不住的,我的建議就是自己整理乙個簡單的記憶短句,然後反覆閱讀,直至記住,下次再遇到問題的時候自己回想下自己記憶的短句,能解決問題就行了,死記硬背就好,盡量簡短。

• 更小的資料型別通常更好:因為更好的xkhpe儲存空間

• 簡單資料型別

• 盡量避免null:含null復合索引無效. 可為null的列會使用更多的儲存空間,在mysql中也需要特殊處理。

timestamp空間利用比datetime小的多,比整形方便處理,整形不會帶來任何好處。

ipv4的位址,經常使用varchar(15)來儲存。然而它實際是32為無符號整數,不是字串。用小數點將位址分成四段只是為了讓人們容易閱讀。

物件關係對映(orm)系統(以及使用它們的「框架」)通常都是低效的,一些orm系統會儲存任意型別的資料到任意型別的後端資料儲存中。這種設計對開發者很有吸引力,因為這使得開發者可以用物件導向的方式工作,不需要考慮資料是怎麼儲存xkhpe的。

原則:盡可能小(占用儲存空間少)、盡可能定長(占用儲存空間固定)、盡可能使用整數。

innodb通過主鍵聚集資料,資料按主鍵順序儲存,更新主鍵索引列的代價很高,因為會強制innodb將每個被更新的行移動到新的位置

乙個常見的錯誤就是為每個列建立單獨的索引,這種錯誤的認知一般都是聽了「xkhpe把where條件裡面的列都建上索引」這樣模糊的建議導致的。

實際上,在多個列上建立獨立的索引大部分情況下都不能提高mysql的查詢效能,有時反而會使查詢變的更慢。

因為索引需要額外的空程式設計客棧間記錄,在查詢到時候如果索引使用不當,需要同時載入索引和資料,會造成查詢慢。

注意:索引列的順序

正確的順序依賴於使用該索引的查詢,並且同時需要考慮如何更好地滿足排序和分組的需要

一般性的經驗法則:

1、將選擇性最高的列放在最前面

2、在查詢的時候不要對索引列進行函式操作

3、盡可能的使用索引

客戶端 -& 伺服器查詢快取 -> 解析器 -> 預處理器 -> 查詢優化器-> 查詢執行引擎 -> 儲存引擎 -> 資料

盡量命中快取,盡量少讀資料,盡量少查資料。

盡量少的關聯資料讀取,資料量越少越快,

注意:副表不存在的資料是null

優化資料訪問原則:

1、是否向資料庫請求了不需要的資料,減少資料載入和網路傳輸

2、查詢是否掃瞄了大量不需要的記錄(返回的行數/掃瞄的行數),降低讀取資料的時間

要想寫乙個好的查詢,必須要理解schema設計、索引設計等知識。他們之間環環相扣,密不可分。只有綜合考慮各方需

求,權衡利弊,才能設計出乙個高效能的資料庫系統。

本文標題: 帶你快速搞定mysql優化

本文位址:

快速排序 快速搞定

快速排序由於排序效率在同為 o n logn 的幾種排序方法中效率較高,因此經常被採用,再加上快速排序思想 it公司都喜歡考這個,還有大大小的程式方面的考試如軟考,考研中也常常出現快速排序的身影。總的說來,要直接默寫出快速排序還是有一定難度的,因為本人就自己的理解對快速排序作了下白話解釋,希望對大家...

五個方面搞定MySQL優化

後期會持續優化這篇文章 1.開啟慢查詢日誌 slow query log 1 2.show status like com com select 執行 select 操作的次數,一次查詢只累加 1。com insert 執行 insert 操作的次數,對於批量插入的 insert 操作,只累加一次。...

小白Python筆記(四)帶你搞定 注釋

使用用自己熟悉的語言,在程式中對某些 進行標註說明,增強程式的可讀性 這是第乙個單行注釋 print hello python 為了保證 的可讀性,後面建議先新增乙個空格,然後再編寫相應的說明文字 print hello python 輸出 hello python 這是乙個多行注釋 在多行注釋之間...