SQL語句優化

2021-07-01 22:59:52 字數 1108 閱讀 8442

sql語句優化規範 :

1. 使用mysql explain 對sql執行效率進行檢測 ,explain顯示了mysql如何使用索引來處理select語句以及連線表。可以幫助選擇更好的索引和寫出更優化的查詢語句。

1) 使用方法:在select語句前加上explain即可

2) explain 分析結果形式如下:

table | type | possible_keys | key | key_len | ref | rows | extra

explain 分析結果形式中各屬性含義:

table :顯示這一行的資料是關於哪張表的

type :這是重要的列,顯示連線使用了何種型別。從最好到最差的連線型別為const、eq_reg、ref、range、indexhe和all

possible_keys :顯示可能應用在這張表中的索引。如果為空,沒有可能的索引。可以為相關的域從where語句中選擇乙個合適的語句

key :實際使用的索引。如果為null,則沒有使用索引。很少的情況下,mysql會選擇優化不足的索引。這種情況下,可以在select語句中使用use index(indexname)來強制使用乙個索引或者用ignore index(indexname)來強制mysql忽略索引

key_len:使用的索引的長度。在不損失精確性的情況下,長度越短越好

ref:顯示索引的哪一列被使用了,如果可能的話,是乙個常數

rows:mysql認為必須檢查的用來返回請求資料的行數

extra  :返回的描述的意義

2. 盡量使用 "inner join " 查詢替換子查詢條件中的 "in " ,防止由於資料量過大,引發資料庫掛起問題 

3.使用索引應注意問題:

1)查詢語句的where條件後邊使用 「!=」或「<>」時,索引不生效,和普通字段一樣

2)查詢語句的where條件後邊使用字串函式或其他函式,索引不生效,和普通字段一樣

3)使用連線(join)查詢時,只有在主鍵和外來鍵的資料型別相同時索引才會生效

4)查詢語句的where條件後邊使用like關鍵字應注意,like '%jx%' 和 like '%jx'方式索引均不生效, like 'jx%'方式索引生效

5)innodb資料表不支援全文索引

SQL 語句優化 OR 語句優化案例

從上海來到溫州,看了前幾天監控的sql語句和資料變化,發現有一條語句的io次數很大,達到了150萬次io,而兩個表的資料也就不到20萬,為何有如此多的io次數,下面是執行語句 select ws.nodeid,wi.laststepid,wi.curstepid from workflowinfo ...

sql語句優化!

1.不要使用in操作符,這樣資料庫會進行全表掃瞄,推薦方案 在業務密集的sql當中盡量不採用in操作符 a 改為 a 4.is null 或is not null操作 判斷字段是否為空 5.及 操作符 大於或小於操作符 大於或小於操作符一般情況下是不用調整的,因為它有索引就會採用索引查詢,但有的情況...

SQL語句優化

explain sql 反饋sql語句執行資訊 1 優化 select min id as nid,uid pmzongfen updatetime picid gg from qd mouldu qd sell limit 1 select uid pmzongfen updatetime pic...