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