2010年12月13日 星期一

資料庫(一):主鍵

資料庫以我的經驗來說是80%的查詢再加上20%的新增、修改及刪除(僅指小弟所經歷過的案子,並不能以一貫之)。所以要增進資料庫效能首要的是注重在搜尋策略的改進與資料庫主鍵及索引的設計。當然要設計前要先了解一下三者的意義,以下為各位作一下介紹。

  • 主鍵
    • 主鍵是一個資料表中用來區別資料列唯一性的欄位或多個欄位。若想知道主鍵要怎麼設計可以google一下,有相當多的討論。
    • 設定主鍵之後資料表不會針對主鍵來對資料表作優化。這個錯誤觀念是最近聽到同事說的。正確來說是,資料表會依據叢集索引來作排序。注意!是排序不是優化。然後SQL Server裡的叢集索引預設值就是主鍵。
    • 主鍵的決定,小弟比較偏向於讓主鍵有意義的方向(或許有些人聽起來覺得像廢話。)來設計。如員工資料表主鍵很自然就是員工編號,員工的獎懲紀錄資料表,自然就會是「員工編號」 + 「依員工來編的流水號」成為主鍵(2個欄位的組合鍵)。而不是另外建立一個自動編號的欄位來作為主鍵。
    • 附帶一提。where子句的欄位,int型態和string效能是有差的,當然是int勝出。因為int的比較比string快上許多。但是影響資料庫搜尋速度的往往是硬碟的讀取,所以不要以為欄位都儘可能使用int就能保證使資料庫的搜尋變快。

沒有留言:

張貼留言