[Day13] 讀 RDBMS 課程 2019 - The Act of SQL
Author: Triton Ho
At Lesson 3: Page 36 - End
Notes
- 不應該輕易使用 looping
// very bad flight_no_array:=[]string{“BR892”,“BR893”} for _, flight_no in range flight_no_array { executeStatement(`Update flight set enabled = false where flight_no = $1`, flight_no) }
- 如果使用 looping 請一個接一個地發出指令
- SQL 支持 check-and-set:
UPDATE ... WHERE ...
- SQL 支持 stored procedure (trade off: algorithm in stored procedure or in application tier)
- SQL 不應該太長 (請善用 transaction)
- 善用 Temporary table 寫報表
- 每個 Connection 有專屬的 Temp table ,不會互相干涉(no locking / blocking)
- 在 OLTP 中,不應該為了迴避 joining 而作 denormalization
- 避免使用 anti-join:
not in
,not exists
=> useEXCEPT
instead (其實我還沒搞懂哪些是 anti-join)