sql service新增索引

2022-09-19 19:12:10 字數 2797 閱讀 3366

語法:

create [索引型別] index 索引名稱

on 表名(列名)

with fillfactor = 填充因子值0~100

go/*例項*/

use 庫名

goif exists (select * from sysindexes where name='ix_test_tname')--檢測是否已經存在ix_test_tname索引

drop index test.ix_test_tname--如果存在則刪除

--建立索引

create nonclustered index ix_test_tname --建立乙個非聚集索引

on test(tname)  --為test表的tname欄位建立索引

with fillfactor = 30 --填充因子為30%

goselect * from test(index = ix_test_tname) where tname = 'a' --指定按『ix_test_tname』索引查詢

總結:

1.什麼是索引:資料庫中的索引是某個表中一列或多列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。

2.索引型別分類

唯一索引(unique):不允許兩行具有相同的索引值(建立了唯一約束,系統將自動建立唯一索引)

主鍵索引:主鍵索引要求主鍵中的每個值是唯一的,(建立主鍵自動建立主鍵索引)

聚集索引(clustered):表中各行的物理順序與鍵值的邏輯(索引)順序相同,表中只能包含乙個聚集索引,主鍵列缺省為聚集索引

非聚集索引(nonclustered):表中各行的物理順序與鍵值的邏輯(索引)順序不匹配,表中可以有249個非聚集索引

3.建立索引的標準:用語頻繁搜尋的列;用語對資料進行排序的列

注意:如果表中僅有幾行,或列中只包含幾個不同的值,不推薦建立索引,因為sql server 在小型表中用索引搜尋資料所花的時間比逐行搜尋更長。

create index (sql server compact edition)

新增:2015 年11 月 26 日

在指定的表上建立索引。可以在表中輸入資料之前建立索引。

語法

create [unique] [nonclustered] index index_name on table_name (column_name [asc|desc][,…n])

with (statistics_norecompute = )]

create [unique] [nonclustered] index index_name on table_name (column_name [asc|desc][,…n])

with (statistics_norecompute = )]

引數術語

定義unique

在表上建立唯一索引。唯一索引是不允許其中任意兩行具有相同索引值的索引。

sql server 2005 compact edition (sql server compact edition) 在建立索引後將檢查是否存在重複的值(如果資料已存在),並在每次使用 insert 或 update 語句新增資料時執行該檢查操作。必須先消除重複值,然後才可對列建立唯一索引。如果存在重複的鍵值,則將取消 create index 語句並返回錯誤。只能對定義為 not null 的列建立唯一索引。

如果存在唯一索引,則可能生成重複鍵值的 update 或 insert 語句將回滾,且 sql server compact edition 返回錯誤。即使 update 或 insert 語句更改許多行,但只要存在乙個重複,上面這一點也將成立。

nonclustered

建立指定表的邏輯排序的索引。使用非聚集索引,資料行的物理順序將獨立於其索引順序。這是唯一支援的索引型別。(預設值為 nonclustered)

index_name

指定索引的名稱。索引名稱在表中必須是唯一的,但是在資料庫中不必是唯一的。

table_name

指定要對其建立索引的表的名稱。

此表包含要建立索引的乙個或多個列。

column name

要應用索引的列。指定兩個或兩個以上的列的名稱,以對指定列中的組合值建立組合索引。在表後面的括號中,按排序優先順序順序列出要包含在組合索引中的列。

注意:不能將包含 ntext 或 image 資料型別的列指定為要建立索引的列。

asc | desc ]

為特定的索引列確定公升序 (asc) 或降序 (dsc) 排序方向。預設值為 asc。

n指示可以為任何特定索引指定多列的佔位符。索引中可以包含的最大列數為 16。

statistics_norecompute

指定是否重新計算分發統計資訊。預設值為 off。

若要還原自動統計資訊更新,請將 statistics_norecompute 設定為 off,或執行不帶 norecompute 子句的 update statistics。

重要事項:

禁用分發統計資訊的自動重新計算功能可能會阻止查詢優化器為涉及此表的查詢選取最佳執行計畫。

以下示例對 mycustomers 表建立了唯一索引:

create table mycustomers (custid int, companyname nvarchar(50))

create unique index idxcustid on mycustomers (custid)

Sql Service 常用函式

declare dt datetime set dt getdate declare number int set number 3 1 指定日期該年的第一天或最後一天 a.年的第一天 select convert char 5 dt,120 1 1 b.年的最後一天 select convert ...

新增表頭,不是新增索引

list1 df.x2 file c users administrator desktop 連續3天 0商機.csv with open file w newline as f fieldnames 門店名稱 日期 人數 商機量 檢視次數 二手帶看量 人均商機量 人均檢視次數 writer csv...

mysql 新增索引

mysql索引原理 1.新增primary key 主鍵索引 mysql alter table table name add primary key column 2.新增unique 唯一索引 mysql alter table table name add unique column 3.新增...