SQL SERVER中索引型別包括的三種型別分別是

2021-06-20 12:50:12 字數 2019 閱讀 4668



唯一索引(unique)

聚集索引(clustered)

非聚集索引(nonclustered)

主鍵與唯一索引的區別

主鍵是一種約束,唯一索引是一種索引,兩者在本質上是不同的。

主鍵建立後一定包含乙個唯一性索引,唯一性索引並不一定就是主鍵。

唯一性索引列允許空值,而主鍵列不允許為空值。

主鍵列在建立時,已經預設為空值 + 唯一索引了。

主鍵可以被其他表引用為外來鍵,而唯一索引不能。

乙個表最多只能建立乙個主鍵,但可以建立多個唯一索引。

主鍵更適合那些不容易更改的唯一標識,如自動遞增列、身份證號等。

在 rbo 模式下,主鍵的執行計畫優先順序要高於唯一索引。 兩者可以提高查詢的速度。

--建立一張僅包含主鍵和唯一索引的表

create table test

(primarykey varchar2(20),

uniquekey  varchar2(20) );

--分別建立主鍵和唯一索引,語法不同

alter table test add constraint test_primarykey primary key (primarykey);

create unique index test_uniquekey on test (uniquekey); --

在user_indexes

中可以看到兩個索引名稱

select table_name,table_type,index_name,index_type,uniqueness

from user_indexes

where table_name='test';

--在user_ind_columns

中可以看到兩個索引欄位名稱

select table_name,index_name,column_name,column_position

from user_ind_columns

where table_name='test';

在user_constraints

僅可以看到主鍵約束名稱

select table_name,constraint_name,constraint_type

from user_constraints

where table_name='test';

--在user_cons_columns

僅可以看到主鍵約束欄位名稱

select table_name,constraint_name,column_name,position

from user_cons_columns

where constraint_name in (select constraint_name

from user_constraints

where table_name='test');

為唯一索引增加乙個非空約束

alter table test modify uniquekey not null;

--在user_constraints

僅可以看到主鍵約束名稱和非空約束名稱

select table_name,constraint_name,constraint_type

from user_constraints

where table_name='test'

在user_cons_columns

僅可以看到主鍵約束欄位名稱和非空約束欄位名稱

select table_name,constraint_name,column_name,position

from user_cons_columns

where constraint_name in (select constraint_name

from user_constraints

where table_name='test')

SQL Server 中建立索引

索引的概念 建立索引的目的 提高了資料庫系統的效能,加快資料的查詢速度與減少系統的響應時間。索引是什麼 資料庫中的索引類似於一本書的目錄,在一本書中通過目錄可以快速找到你想要的資訊,而不需要讀完全書。在資料庫中,資料庫程式使用索引可以快速查詢到表中的資料,而不必掃瞄整個表。書中的目錄是乙個字詞以及各...

SQL Server索引中的include列

從sql server 2005 開始,可以通過將include列新增到非聚集索引擴充套件其功能。create nonclustered index ind user id createtime on dbo workitems user id asc,createtime desc include...

SQLServer中設定XML索引

xml索引分為主xml索引和次xml索引 1.主xml索引 為了完整 一致的表示xml的值,格式 create primary xml index indexname on tablename columname 2.次xml索引 對於xpath和xquery表示式,可以使用xml次索引 path索...