這個鏈結可以看
涉及資料庫的操作基本都是變得很慢了, 所以通常說資料庫是程式的瓶頸
測試/優化資料庫/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...