SQL筆記
2020-09-22 12:11 Last Edited: 2021-04-18 23:52 1,120
  1. 避免全表掃瞄(Full Table Scans, FTS)
  2. 加index
  3. 不要select *,要什麼就抓什麼,不要抓多餘資料
  4. where盡量避免使用!=和<>,這樣會令engine放棄使用index改用FTS
  5. 避免用null,理由同上,可以將表的null改成0,然後用=0,觸發使用index
  6. 避免使用or,改用union all,理由同上
  7. 避免在where的A項使用expression,例如substring(colA, 3) = 'ABC',寧可用colA like 'ABC%',理由同上
  8. '%ABC%'也會觸發FTS
  9. 要用primary key去抓,不用key (或者index)就是FTS
  10. 3個column組成的key,你用1個key column去抓,一樣是FTS (除非那個key剛好是3個key中的第1個)
  11. 多用int,少用string
  12. select into比create再insert產生更少log,批量比一條一條insert快
  13. 同理,盡量避免cursor
  14. 非必要的話不用order by,等於在回傳的結果再跑一次TFS,除非回傳set很小
  15. 就算很少也是讓browser side去order比較好

 

SQL筆記

當在where-clause使用non-key column時 (只有id是key),速度等同於full table scan

當where使用所有key時,速度很快
當where只使用3個key的其中一個key時,而且不是第1個而是第2個,等同於full table scan
但使用第1個的話,效能還是等同於用了index

 

Category: Coding
Tags: Sql