優化sql語句

2021-09-08 17:48:42 字數 1165 閱讀 7030

這個鏈結可以看

涉及資料庫的操作基本都是變得慢了, 所以通常說資料庫是程式的瓶頸

測試/優化資料庫/sql的方法:

把order排序、where條件等乙個乙個去除法來做測試,結果發現問題就出在排序部分,去除排序的時候,執行時間由原來的48秒變成0.3x秒

於是把涉及排序的字段組成乙個聯合索引alter table xx add index indexname(x1,x2,x3),經過2分鐘建立新索引之後再執行同乙個sql語句,哇塞0.28s

幾經分析和測試原來就是因為新增了聯合索引的原因,而且這個sql語句當中有個or,當把這個or改用union之後問題排除。

這回又得出乙個心得:寫sql的時候千萬別一時就手,隨便寫個就ok,那會為以為帶來很嚴重的後果

在用mysql查詢資料庫的時候,連線了很多個用,發現非常慢。例如:

select ... where p.languages_id = 1 and m.languages_id =

1 and c.languages_id = 1 and t.languages_id =

1 and p.products_id in (472,474)

這樣查詢需要20多秒,雖然在各個欄位上都建立了索引。用分析explain sql一分析,發現在第一次分析過程中就返回了幾萬條資料:

where p.languages_id = 1 ,然後再依次根據條件,縮小範圍。

而我改變一下where 欄位的位置之後,速度就有了明顯地提高:

where p.products_id in (472,474) and

p.languages_id = 1 and m.languages_id = 1 and c.languages_id =

1 and t.languages_id = 1

這樣,第一次的條件是p.products_id in (472,474),它返回的結果只有不到10條,接下來還要根據其它的條件來過濾,自然在速度上有了較大的提公升。

經過實踐發現,不要以為where中的字段順序無所謂,可以隨便放在哪,應該盡可能地第一次就過濾掉大部分無用的資料,只返回最小範圍的數據。

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...