固然現今硬件當作本已經下降,經由過程進級硬件晉升系統機能也是常用的優化體例。而及時性要求很高的系統,仍是要從sql方面進行優化,本文以sqlserver為例演示,此中的優化道理也合用于其他數據庫
優化的一個本家兒要方面就是盡量避免全表掃描,改為索引掃描
恰當的索引
1)索引就半斤八兩于字典的目次,按照索引查找就可以直接定位具體頁數,不消整本字典一頁一頁的查找,效率天然是不問可知。
2)對于汗青數據不太存眷的場景,好比訂單,凡是來說,3年之前的訂單數據,很少會需要查詢到,比來的訂單才是最常用的,那么可以考慮把訂單日期作為索引的一個列建立
3)經常需要where查詢的字段也作為索引的一個列建立
盡量不要有空判定的語句,因為空判定將導致全表掃描,而不是索引掃描。
對于空判定這種環境,可以考慮對這個列建立數據庫默認值
盡量不要利用不等于前提,因為,這會導致全表掃描
對于不等于這種環境,考慮改為規模查詢解決
盡量不要利用or前提,因為,這會導致全表掃描
對于or這種環境,可以改為 別離查詢,然后 union all
盡量不要利用擺布恍惚查詢,因為,這會導致全表掃描
對于擺布恍惚查詢的環境,試著改為右側恍惚查詢,如許是可以索引查找的
盡量不要在執行算數運算后的比力,因為,函數、算術運算或其他表達式運算凡是將導致全表掃描
對于這種環境,可以考慮冗余部門數據到表中
盡量利用exists取代in
盡量避免一次性返回年夜數據量,可以考慮分頁返回
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!