6.2 索引類型

  1. 叢集(Cluster)索引
  2. 資料表本身即是依此索引的順序存放,無須另外建索引表,因此每個表只能有一個叢集索引,通常是主鍵(Primary Key)。特性是查詢最快、最直接,異動卻最慢,因為每個欄位都要搬動。建立叢集(Cluster)索引範例如下:

    -- 將資料表product的pid欄位建為叢集索引
    create clustered index product_pid
    on product(pid)
  3. 唯一(Unique)索引
  4. 此欄位不允許重複值,如:學號、訂單編號等,每次用此欄位查詢只會得到一(或零)筆資料,主鍵(Primary Key)就是一種Unique索引,通常是由資料庫所屬的應用系統來決定此欄位的值,而不能由外部所提供,才能確保唯一性。建立唯一(Unique)索引範例如下:

    -- 將資料表customer的身分證號欄位ssid建為唯一索引
    create unique index custm_ssid
    on customer(ssid)

    -- 建立主鍵(Primary Key)的方式
    -- 建立 student表時 直接指定 Sid欄 為主鍵
    create table student
    (
     sid char(7) primary key,
     sname char(10) not null,
     tel char(10)
    )

    -- 將 Customer的Cid欄位作為主鍵
    ALTER TABLE Customer
    ADD CONSTRAINT PK_Customer
      PRIMARY KEY (Cid)
    觀看教學影片
  5. 欄位允許重複值的索引
  6. 例如姓名、生日、電話、…等欄位有可能重複,一定會重複的欄位例如地區、年齡、成績、性別…,建立索引可以把查詢的範圍縮小,建立索引範例如下:

    -- 將資料表customer的cname欄位建為索引
    create index custm_cname on customer(cname)
  7. 複合(Composite)索引(通常是Unique索引)
  8. 由兩(多)個欄位共同組成的索引,當單一欄位無法決定資料的唯一性時,需兩(多)個欄位組合才能決定唯一性,此外,在查詢時經常同時作查詢的欄位,也適合使用複合索引。建立索引範例如下:

    -- 將資料表prdorder的 cid及odate 兩欄位建成複合索引
    create index order_odate on prdorder (cid, odate)

    需注意欄位的排列是有順序性:
    a. (Cid, Odate):以客戶為主,查客戶各訂購日期
    b. (Odate, Cid):以日期為主,查該日有訂購的客戶