MYSQL SQL優化流程

2021-07-29 20:09:00 字數 1203 閱讀 3228

常去想想以前的東西,懷舊不是用感傷的,是溫故知新,加油!!!

(1)盡量將複雜的sql拆成幾個簡單的查詢

(2)盡量使用表連線,減少使用過 in/not in

(3)儘量減少子查詢的使用或者將其合併出來

(4)盡量將 in/ not in /exists/not exists變為 join 語句,減少/合併子查詢

(1)注意空值變化

(2)適當進左連線

(3)將sql進行不同方式靈活轉換,測試效能

i. row examined(最終要依據)

ii. query time

是否產生了慢查詢,產生全表掃瞄,時間

中介軟體的影響

2、有索引的where條件通過索引訪問表上的資料

3、沒有索引的where條件是通過where過濾資料

注意:必須有主鍵,盡量保證業務的均勻分配,優先考慮tps

1.%開頭的問題!!!

2.字元列上面沒有加引號!!!

where條件不能有計算與函式處理 !!

1.沒有查詢條件,或者查詢條件沒有建立索引

2.查詢條件上沒有使用引導列,多列索引沒有正確被使用(where條件沒有寫前導列)

3.查詢的數量是大表的大部分

如果有主鍵索引,都要走主鍵索引

對於二級索引,如果訪問量大,會全表掃瞄

4.索引本身失效

5.查詢條件使用函式或者計算

6.對於小表進行查詢

7.忽略索引的問題

8.隱式轉換導致索引失效!!!!!

數字列不害怕隱式轉換

字元列害怕隱式轉換

9.<>不等於號不一定不走索引

10.%開頭的情況,索引一定失效

11.not in /not exists 多數情況下不走索引

12.當變數是times型別,表字段是data的時候,或相反情況下,索引失效。而且如果資料填充進去也不對

13.注意非空的情況,b-tree索引處理的不是很好

MySQL SQL語句優化

檢視表定義 show create table users 檢視表的索引 show index from users 你要獲取第乙個表的所有資訊,你說全表掃瞄快呢還是索引掃瞄快呢?所以當你查詢庫 包括left join中的臨時庫 的所有資訊時,資料庫會選擇最優方法 全表掃瞄!s表dept id na...

Mysql sql查詢優化

1.單個條件未加索引 對應的執行計畫 從查詢計畫中可以看出該查詢全表掃瞄,掃瞄行數 9000多行 2.增加唯一索引之後查詢 查詢時間縮短,然後再看查詢計畫 查詢計畫中,掃瞄行數中只有一行。上面建立的索引是唯一索引,常規索引中查詢計畫的type一般為ref 索引列和非索引列一起查詢,索引仍然會有效 單...

MYSQL SQL查詢優化

1.對查詢進行優化,應盡量避免全表掃瞄,首先應考慮在 where 及 order by 涉及的列上建立索引。2.應盡量避免在 where 子句中對字段進行 null 值判斷,否則將導致引擎放棄使用索引而進行全表掃瞄,可以對欄位進行設定預設值處理,避免null值出現 3.應盡量避免在 where 子句...