查詢
- 模糊查詢LIKE '%AAA%' 會致使相關列的索引沒法使用。(文本輸入改成下拉列表指定表查詢,避免模糊查詢)
- 儘可能避免使用」*」
索引
法則:不要在創建的索引的數據列上進行下列操做,不然引擎將放棄索引實行全表操做:函數
- 避免對索引字段進行計算操做
- 避免在索引字段上使用not,<>,!=
- 避免在索引列上使用IS NULL和IS NOT NULL
- 避免在索引列上出現數據類型轉換
- 避免在索引字段上使用函數
- 避免創建索引的列中使用空值
Where語句
- 以數字格式聲明字符值,不然(加了’2017’)將致使全表查詢且索引無效。
- 用exist和not exist代替in和not in,能用between不用in。
- 避免對字段進行null判斷,不得不爲空的地方能夠用默認值,好比0。由於null也是佔字符空間的,varchar例外。
- 儘可能不要在「=」的左邊進行函數、表達式、算術運算。
- 用union替代or。
排序
帶有distinct,union,minus,intersect,order by的SQL語句會啓動SQL引擎執行,耗費資源的排序功能。distinct須要一次排序操做,而其餘的至少須要執行兩次排序。排序