SQL優化(二)

  1. 不要在where 子句中的 = 左邊進行函數,算數運算或其他表達式運算,否則系統將可能無法正確使用索引
  2. 在使用索引字段作爲條件時,如果該索引是複合索引,那麼必須使用到該索引中的第一個字段作爲條件時才能 保證系統使用該字段.
  3. 不要寫一些沒有意義的查詢,如需生成一個空表結構,請創建表
  4. UPDATE 語句,如果只更改1,2個字段,不要update全部字段,否則頻繁調用會引起明顯的性能消耗,同時帶來大量日誌.
  5. 對於多張大數據量(這裏幾百條就算大了)的表JOIN,要先分頁在JOIN,否則邏輯讀會很高,性能很差.
  6. select count(*) from table 這種不帶任何條件的count會引起全表掃描,並沒有任何業務意義,是一定要杜絕的
  7. 應儘可能的避免更新 clustered 索引數據列,因爲clustered索引數據的順序就是表記錄的物理存儲順序,一旦該列值改變將導致整個記錄的順序的調整,會消耗相當大的資源.若應用系統需要頻繁更新 clustered 索引數據列,那麼需要考慮是否應將該索引建爲clustered 索引
  8. 任何地方不要使用select * from table ,不要返回用不到的任何字段
  9. 儘量使用表變量來代替臨時表,如果表變量包含大量數據,請注意索引非常有限(只有主鍵索引)
  10. 避免頻繁創建和刪除臨時表,以減少系統資源的消耗,臨時表並不是不可以使用,適當的使用他們可以使他們可以使某些例程更有效,例如當需要重複引用大型表或者常用表中的某個數據集時.但是對於一次性事件,最好使用導出表
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章