數據庫性能優化之SQL語句

查詢

  1. 模糊查詢LIKE '%AAA%' 會致使相關列的索引沒法使用。(文本輸入改成下拉列表指定表查詢,避免模糊查詢)
  2. 儘可能避免使用」*」

索引

法則:不要在創建的索引的數據列上進行下列操做,不然引擎將放棄索引實行全表操做:函數

  • 避免對索引字段進行計算操做
  • 避免在索引字段上使用not,<>,!=
  • 避免在索引列上使用IS NULL和IS NOT NULL
  • 避免在索引列上出現數據類型轉換
  • 避免在索引字段上使用函數
  • 避免創建索引的列中使用空值

Where語句

  1. 以數字格式聲明字符值,不然(加了’2017’)將致使全表查詢且索引無效。
  2. 用exist和not exist代替in和not in,能用between不用in。
  3. 避免對字段進行null判斷,不得不爲空的地方能夠用默認值,好比0。由於null也是佔字符空間的,varchar例外。
  4. 儘可能不要在「=」的左邊進行函數、表達式、算術運算。
  5. 用union替代or。

排序

帶有distinct,union,minus,intersect,order by的SQL語句會啓動SQL引擎執行,耗費資源的排序功能。distinct須要一次排序操做,而其餘的至少須要執行兩次排序。排序

相關文章
相關標籤/搜索