聚集、非聚集索引、唯一索引、復合索引、系統自建索引
2008-11-25 09:59
聚集與非聚集索引
摘自:
索引是在資料庫表或者檢視上建立的物件,目的是為了加快對錶或檢視的查詢的速度
按照儲存方式分為:聚集與非聚集索引
按照維護與管理索引角度分為:唯一索引、復合索引和系統自動建立的索引
索引的結構是由:根節點--->非葉節點--->非葉節點--->葉節點
1、聚集索引(只能建立乙個):表中儲存的資料按照索引的順序儲存,檢索效率比普通索引高,但對資料新增/修改/刪除的影響比較大
特點:
(1) 乙個表可以最多可以建立249個索引
(2) 先建聚集索引才能建立非聚集索引
(3) 非聚集索引資料與索引不同序
(4) 資料與索引在不同位置
(5) 索引在葉節點上儲存,在葉節點上有乙個"指標"直接指向要查詢的資料區域
(6) 資料不會根據索引鍵的順序重新排列資料
建立聚集索引的語法:
create clustered index idximpid on emp(empid)
2、非聚集索引(可以建立多個):不影響表中的資料儲存順序,檢索效率比聚集索引低,對資料新增/修改/刪除的影響很少
特點:
(1) 無索引,資料無序
(2) 有索引,資料與索引同序
(3) 資料會根據索引鍵的順序重新排列資料
(4) 乙個表只能有乙個索引
(5) 葉節點的指標指向的資料也在同一位置儲存
語法:
create nonclustered index idxempid on emp(empid)
3、惟一索引:惟一索引可以確保索引列不包含重複的值.
可以用多個列,但是索引可以確保索引列中每個值組合都是唯一的
姓 名
李 二
張 三
王 五
語法: create unique index idxempid on emp(姓,名)
4、復合索引:如果在兩上以上的列上建立乙個索引,則稱為復合索引。
那麼,不可能有兩行的姓和名是重複的
語法:
create index indxfullname on addressbook(firstname,lastname)
5、系統自建的索引:在使用t_sql語句建立表的時候使用primary key或unique約束時,會在表上自動建立乙個惟一索引
自動建立的索引是無法刪除的
語法:
create table abc
( empid int primary key,
firstname varchar(50)unique,
lastname varchar(50)unique,
)
這樣的結果就出來了三個索引,但只有乙個聚集索引哦
6、建立索引的方法:
1、企業管理器中
(1)右擊某個表,所有任務---管理索引,開啟管理索引,單擊「新建」就可以建立索引
(2)在設計表中進行設計表,管理索引/鍵
(3)在關係圖中,新增表後右擊關係圖中的某個表,就有「索引/鍵」
(4)通過嚮導,資料庫---建立索引嚮導
(5)通過t-sql語句
2、能過「索引優化嚮導」來優化索引的嚮導,通過它可以決定選擇哪些列做為索引列
實驗的流程:
1、先建立乙個表,然後檢視一下他的占用資源情況及select * from 表
看一下排序
2、然後建立索引,在**一下占用資源的情況,及排序情況,看看聚集與非聚集的排序是
否用變化
答案是:聚集的有變化,非聚集的排序與未建立索引之前一樣
13開發前的準備 資料庫
開發 也是需要挺多方面的技能的,前面十幾篇文章提到了一部分技能,但都是作為單一的部分得來講,接下來這四篇文章會講怎樣把學的零散的知識串聯起來。首先是資料庫,無論是做 軟體還是遊戲,大多是要用到資料庫的,也就是做一些資料的永久性儲存,資料庫可以很方便地按照自己的需要儲存資料。課程使用的是資料庫sql2...
資料庫準備
1.2.匯入資料庫指令碼 1 執行d trinity source trinitycore sql create create mysql.sql。2 選擇auth資料庫,執行d trinity source trinitycore sql base auth database.sql指令碼。3 選...
資料庫優化 資料庫設計優化
一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...