線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4695
推到 Plurk!
推到 Facebook!

PK跟加INDEX

答題得分者是:herbert2
chjunsen
一般會員


發表:38
回覆:15
積分:10
註冊:2006-10-25

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-08-01 11:24:43 IP:202.39.xxx.xxx 訂閱
大大不好意思請教一下
PK跟INDEX區別的實益在那?

設PK就會自己新增INDEX
兩者的特性都是唯一值.可以增加查詢的速度
不一樣PK只能設一組
INDEX可以設多組..
請問還有其他的原因做這樣的區分嗎
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-08-01 12:49:50 IP:202.39.xxx.xxx 訂閱
Primary Key 是與 Table 緊密結合的 Index, 屬於 Constraint 的一種,必須具有唯一性,且只准<=1個;
但萬一故障可能會造成 Table 不正常,故小弟習慣用 Unique Index 取代。

Index 可分為一般 Index (不必具有唯一性),與 Unique Index (必須具有唯一性),若故障可 Drop 再重建。
Primary Key 的 Index 也是可以 Drop 再重建。

Index 雖可加速資料搜尋,但 Insert 與 Update 時會增加一點點時間,故太多 Index 或 Index Key 設計不恰當,
並不一定能加速資料的搜尋。
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-08-03 08:47:04 IP:114.35.xxx.xxx 訂閱
容小弟狗尾續貂一下
當有 Foreign Key 時,被連結到 Foreign Key 的欄位應該建立 Index,可以加快 Foreign Key 限制的檢查

例如:
Table A
欄位名稱備註
A1PK
A2

Table B
欄位名稱備註
B1PK
B2FK 到 A.A2

此時,A2 應該建立 Index
否則操作 (新增 / 修改 / 刪除) Table B 時,會因為 FK 要檢查 A.A2,而 A2 沒有 Index,變成 Table Scan (逐筆比對),Table B 的操作速度會隨著 Table A 筆數的增多而愈來愈慢
A.A2 建立 Index 之後,就會變成 Index Seek (索引搜尋),Table B 的操作速度才會正常
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
編輯記錄
sryang 重新編輯於 2011-08-02 18:49:23, 註解 無‧
系統時間:2024-11-23 1:42:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!