sqlserver建索引,sqlserver創(chuàng)建索引的5種方法

如何創(chuàng)建SqlServer視圖的索引

如何創(chuàng)建SqlServer視圖的索引

創(chuàng)新互聯(lián)專注于溫江企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。溫江網(wǎng)站建設(shè)公司,為溫江等地區(qū)提供建站服務(wù)。全流程按需設(shè)計網(wǎng)站,專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

這樣一來,可從索引視圖檢索數(shù)據(jù)而無需重新編碼,由此帶來的高效率也使現(xiàn)有查詢獲益。在視圖上創(chuàng)建的第一個索引必須是唯一聚集索引。在創(chuàng)建唯一聚集索引后,可創(chuàng)建其它非聚集索引。視圖上的索引命名規(guī)則與表上的索引命名規(guī)則相同。唯一區(qū)別是表名由視圖名替換。(Sql Server聯(lián)機(jī)幫助)

索引怎么建立使用

Create Relational Index

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name

ON object ( column [ ASC | DESC ] [ ,...n ] )

[ INCLUDE ( column_name [ ,...n ] ) ]

[ WHERE filter_predicate ]

[ WITH ( relational_index_option [ ,...n ] ) ]

[ ON { partition_scheme_name ( column_name )

| filegroup_name

| default

}

]

[ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

參數(shù)

UNIQUE

為表或視圖創(chuàng)建唯一索引。唯一索引不允許兩行具有相同的索引鍵值。視圖的聚集索引必須唯一。

無論 IGNORE_DUP_KEY 是否設(shè)置為 ON,數(shù)據(jù)庫引擎都不允許為已包含重復(fù)值的列創(chuàng)建唯一索引。否則,數(shù)據(jù)庫引擎會顯示錯誤消息。必須先刪除重復(fù)值,然后才能為一列或多列創(chuàng)建唯一索引。唯一索引中使用的列應(yīng)設(shè)置為 NOT NULL,因為在創(chuàng)建唯一索引時,會將多個 Null 值視為重復(fù)值。

CLUSTERED

創(chuàng)建索引時,鍵值的邏輯順序決定表中對應(yīng)行的物理順序。聚集索引的底層(或稱葉級別)包含該表的實際數(shù)據(jù)行。一個表或視圖只允許同時有一個聚集索引。

具有唯一聚集索引的視圖稱為索引視圖。為一個視圖創(chuàng)建唯一聚集索引會在物理上具體化該視圖。必須先為視圖創(chuàng)建唯一聚集索引,然后才能為該視圖定義其他索引。

在創(chuàng)建任何非聚集索引之前創(chuàng)建聚集索引。創(chuàng)建聚集索引時會重新生成表中現(xiàn)有的非聚集索引。

如果沒有指定 CLUSTERED,則創(chuàng)建非聚集索引。

注意:

因為按照定義,聚集索引的葉級別與其數(shù)據(jù)頁相同,所以創(chuàng)建聚集索引和使用 ON partition_scheme_name 或 ON filegroup_name 子句實際上會將表從創(chuàng)建該表時所在的文件組移到新的分區(qū)方案或文件組中。對特定的文件組創(chuàng)建表或索引之前,應(yīng)確認(rèn)哪些文件組可用并且有足夠的空間供索引使用。

NONCLUSTERED

創(chuàng)建一個指定表的邏輯排序的索引。對于非聚集索引,數(shù)據(jù)行的物理排序獨(dú)立于索引排序。

無論是使用 PRIMARY KEY 和 UNIQUE 約束隱式創(chuàng)建索引,還是使用 CREATE INDEX 顯式創(chuàng)建索引。每個表都最多可包含 999 個非聚集索引。

對于索引視圖,只能為已定義唯一聚集索引的視圖創(chuàng)建非聚集索引。

默認(rèn)值為 NONCLUSTERED。

index_name

索引的名稱。索引名稱在表或視圖中必須唯一,但在數(shù)據(jù)庫中不必唯一。索引名稱必須符合標(biāo)識符的規(guī)則。

column

索引所基于的一列或多列。指定兩個或多個列名,可為指定列的組合值創(chuàng)建組合索引。在 table_or_view_name 后的括號中,按排序優(yōu)先級列出組合索引中要包括的列。

一個組合索引鍵中最多可組合 16 列。組合索引鍵中的所有列必須在同一個表或視圖中。組合索引值允許的最大大小為 900 字節(jié)。

不能將大型對象 (LOB) 數(shù)據(jù)類型 ntext、text、varchar(max)、 nvarchar(max)、varbinary(max)、xml 或 image 的列指定為索引的鍵列。另外,即使 CREATE INDEX 語句中并未引用 ntext、text 或 image 列,視圖定義中也不能包含這些列。

如果 CLR 用戶定義類型支持二進(jìn)制排序,則可以為該類型的列創(chuàng)建索引。另外,對于已定義為用戶定義類型列的方法調(diào)用的計算列,只要這些方法標(biāo)記為確定性方法且不執(zhí)行數(shù)據(jù)訪問操作,便可為該計算列創(chuàng)建索引。

[ ASC | DESC ]

確定特定索引列的升序或降序排序方向。默認(rèn)值為 ASC。

INCLUDE ( column [ ,...n ] )

指定要添加到非聚集索引的葉級別的非鍵列。非聚集索引可以唯一,也可以不唯一。

在 INCLUDE 列表中列名不能重復(fù),且不能同時用于鍵列和非鍵列。

除 text、ntext 和 image 之外,允許所有數(shù)據(jù)類型。如果指定的任一非鍵列屬于 varchar(max)、nvarchar(max) 或 varbinary(max) 數(shù)據(jù)類型,則必須脫機(jī) (ONLINE = OFF) 創(chuàng)建或重新生成該索引。

精確或不精確的確定性計算列都可以是包含列。從 image、ntext、text、varchar(max)、nvarchar(max)、varbinary(max) 和 xml 數(shù)據(jù)類型派生的計算列可以包含在非鍵列中,前提是允許將這些計算列數(shù)據(jù)類型作為包含列。

WHERE filter_predicate

通過指定索引中要包含哪些行來創(chuàng)建篩選索引。篩選索引必須是對表的非聚集索引。為篩選索引中的數(shù)據(jù)行創(chuàng)建篩選統(tǒng)計信息。

篩選謂詞使用簡單比較邏輯且不能引用計算列、UDT 列、空間數(shù)據(jù)類型列或 hierarchyID 數(shù)據(jù)類型列。比較運(yùn)算符不允許使用 NULL 文本的比較。請改用 IS NULL 和 IS NOT NULL 運(yùn)算符。

下面是 Production.BillOfMaterials 表的篩選謂詞的一些示例:

WHERE StartDate '20000101' AND EndDate = '20000630'

WHERE ComponentID IN (533, 324, 753)

WHERE StartDate IN ('20000404', '20000905') AND EndDate IS NOT NULL

篩選索引不適用于 XML 索引和全文索引。對于 UNIQUE 索引,僅選定的行必須具有唯一的索引值。篩選索引不允許有 IGNORE_DUP_KEY 選項。

ON partition_scheme_name ( column_name )

指定分區(qū)方案,該方案定義要將分區(qū)索引的分區(qū)映射到的文件組。必須通過執(zhí)行 CREATE PARTITION SCHEME 或 ALTER PARTITION SCHEME,使數(shù)據(jù)庫中存在該分區(qū)方案。column_name 指定將作為分區(qū)索引的分區(qū)依據(jù)的列。該列必須與 partition_scheme_name 使用的分區(qū)函數(shù)參數(shù)的數(shù)據(jù)類型、長度和精度相匹配。column_name 不限于索引定義中的列。除了在對 UNIQUE 索引分區(qū)時,必須從用作唯一鍵的列中選擇 column_name 外,還可以指定基表中的任何列。通過此限制,數(shù)據(jù)庫引擎可驗證單個分區(qū)中的鍵值唯一性。

注意:

在對非唯一的聚集索引進(jìn)行分區(qū)時,如果尚未指定分區(qū)依據(jù)列,則默認(rèn)情況下數(shù)據(jù)庫引擎將在聚集索引鍵列表中添加分區(qū)依據(jù)列。在對非唯一的非聚集索引進(jìn)行分區(qū)時,如果尚未指定分區(qū)依據(jù)列,則數(shù)據(jù)庫引擎會添加分區(qū)依據(jù)列作為索引的非鍵(包含)列。

如果未指定 partition_scheme_name 或 filegroup 且該表已分區(qū),則索引會與基礎(chǔ)表使用相同分區(qū)依據(jù)列并被放入同一分區(qū)方案中。

有關(guān)將索引分區(qū)的詳細(xì)信息,請參閱已分區(qū)索引的特殊指導(dǎo)原則。

ON filegroup_name

為指定文件組創(chuàng)建指定索引。如果未指定位置且表或視圖尚未分區(qū),則索引將與基礎(chǔ)表或視圖使用相同的文件組。該文件組必須已存在。

ON "default"

為默認(rèn)文件組創(chuàng)建指定索引。

在此上下文中,“default”不是關(guān)鍵字。它是默認(rèn)文件組的標(biāo)識符,并且必須進(jìn)行分隔(類似于 ON "default" 或 ON[default])。如果指定了 "default",則當(dāng)前會話的 QUOTED_IDENTIFIER 選項必須為 ON。這是默認(rèn)設(shè)置。

[ FILESTREAM_ON { filestream_filegroup_name | partition_scheme_name | "NULL" } ]

在創(chuàng)建聚集索引時,指定表的 FILESTREAM 數(shù)據(jù)的位置。FILESTREAM_ON 子句用于將 FILESTREAM 數(shù)據(jù)移動到不同的 FILESTREAM 文件組或分區(qū)方案。

filestream_filegroup_name 是 FILESTREAM 文件組的名稱。該文件組必須包含一個使用 CREATE DATABASE 或 ALTER DATABASE 語句為該文件組定義的文件;否則,將引發(fā)錯誤。

如果表已分區(qū),則必須包含 FILESTREAM_ON 子句并且必須指定 FILESTREAM 文件組的分區(qū)方案,且此分區(qū)方案需使用與該表分區(qū)方案相同的分區(qū)函數(shù)和分區(qū)列。否則將引發(fā)錯誤。

如果該表未分區(qū),則無法對 FILESTREAM 列分區(qū)。該表的 FILESTREAM 數(shù)據(jù)必須存儲在一個由 FILESTREAM_ON 子句指定的文件組中。

如果創(chuàng)建的是聚集索引且該表不包含 FILESTREAM 列,則可在 CREATE INDEX 語句中指定 FILESTREAM_ON NULL。

sqlserver的索引

索引是加快檢索速度的方法,前提要數(shù)據(jù)量大。

索引分為:聚集索引、非聚集索引、唯一性索引

聚集索引:邏輯順序和物理順序一致,一張表只能有一個聚集索引,當(dāng)創(chuàng)建主鍵的時候默認(rèn)會創(chuàng)建聚集索引。

非聚集索引:邏輯順序和物理順序不一致。可以建很多個非聚集索引,通過create index 默認(rèn)創(chuàng)建的索引是非聚集索引。

索引的準(zhǔn)則:

1、排序的字段

2、經(jīng)常要使用的字段

sqlserver 怎么建索引

用創(chuàng)建索引的語句:

CREATE[?UNIQUE?]?[?CLUSTERED?|?NONCLUSTERED?]?INDEX索引名

ON?{表名|視圖名}?(列名[?ASC?|?DESC?]?[?,...n?]?)

網(wǎng)站標(biāo)題:sqlserver建索引,sqlserver創(chuàng)建索引的5種方法
標(biāo)題網(wǎng)址:http://muchs.cn/article4/phjcie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、軟件開發(fā)、電子商務(wù)、網(wǎng)站導(dǎo)航、定制開發(fā)品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)