「SQL不就是SQL?哪來什麼美學」我看到本書的第一個想法
不過聳動的標題,還是促使我從架子拿下來翻幾頁,
「喔喔!?我好像遇過這件事?」
「原來學校教的離散數學跟檔案結構不是在騙我!?」
於是我把它買回家
本書內容:
SQL的理論,但是是對於實作極度重要的理論
實作以戰爭比喻,而理論部分以兵法比喻
很多內容,會提出某SQL指令或Table設計,為何資料庫會這麼做,它到底在想些什麼,進而產生對應的效率問題
讀了多少:
全精讀完,讀懂約七成
重點心得:
- 正規化的重要性,與Null的潛藏危險:『以正合,以奇勝』,正規化跟非Null是「正」,反正規化跟允許Null是「奇」,問題是何時該反正規化,而不是為何要正規化,正規化跟非Null是必備
- 索引是雙面刃,在特定條件下會增加Select效率,但是一定會降低Insert效率
- SQL的本質是集合理論,跟資料庫核心接近程度為資料>關聯式(如join,union,group by)>非關聯式(如 order by, case when ),Query指令越接近核心速度越快,所以當有複雜的查詢時,關聯度高子查詢要先放在內層
- 最佳化處理器(SQL Optimizer),跟前三點有正相關,跟理論背離的Query指令會無法達成最佳化,甚至有時候會搞砸更多事
- 鎖定(Lock)是為了保持資料同步下正確,但是SQL通常是處理"整批"資料;所以換句話說,反正規化,條件限制少的Query指令,或牽涉超出集合理論能做的部分,為了保持資料正確性,SQL會加大鎖定範圍
- 效率跟前面有前五點必然相關,通常不佳的效率來自於反覆執行的小型指令
- 階層式(hierarchy)結構或樹狀結構不適合關聯式資料庫,可以的話盡量用程式解
- SQL結構彈性取決於與真實世界符合程度,而非過度動態的表格或高深莫測的語法
其實這本書不像封面看起來的無趣,只是有些地方必須要先學過相關的數學或電腦知識,在配上相關實務經驗,才會有豁然開朗的感覺
1 則留言:
HI,你好, 我想買SQL之美學這本書, 不過己經絶版了, GOOGLE到你的BLOG, 不知你能不能把這本書賣給我呢, 如果願意,麻煩, MAIL到我的信箱 winyeh1013@gmail.com
張貼留言