sql索引例項

2022-03-16 08:36:51 字數 2685 閱讀 1136

在sql server2008中建立測試資料庫test,接著建立資料庫表並插入資料,sql**如下:

use

test

ifexists (select

*from

information_schema.tables

where table_name =

'emp_pay')

drop

table

emp_pay

gouse

test

ifexists (select name from

sys.indexes

where name =

'employeeid_ind')

drop

index

emp_pay.employeeid_ind

gouse

test

gocreate

table

emp_pay

( employeeid

intnot

null

, base_pay

money

notnull

, commission

decimal(2, 2) not

null

)insert

emp_pay

values (1, 500, .10

)insert

emp_pay

values (2, 1000, .05

)insert

emp_pay

values (6, 800, .07

)insert

emp_pay

values (5, 1500, .03

)insert

emp_pay

values (9, 750, .06)

執行完上述sql**以後我們會發現在test資料庫中多出了一張emp_pay表,資料庫表的內容如下圖所示:

從上圖我們可以看出資料庫中儲存的資料排列順序與我們插入的先後順序一致。接下來我們查詢employeeid=5的字段,執行如下sql**:

use

test

select

*from emp_pay where employeeid=

5

在sql server management studio中我們點選「顯示估計的查詢計畫」,會出現如下圖所示的查詢計畫圖:

其中表掃瞄的內容為:

接下來我們為上述表新增聚集唯一索引,**如下:

set nocount off

create

unique

clustered

index

employeeid_ind

onemp_pay (employeeid)

go

在執行完上述建立索引的**以後,我們再次查詢emp_pay的資料內容,如下圖所示:

從上圖我們可以發現資料內容已經按照employeeid進行了排序。

我們繼續執行前面關於employeeid=5的查詢,點選「顯示估計的執行計畫」,出現如下圖所示內容:

聚集索引查詢的內容為:

當我們為資料庫表中的某乙個字段建立索引,並且在查詢語句中where子句中用到這樣乙個字段,那麼查詢效率會有所提高,我們上述實驗因為資料量的關係查詢效率提高不明顯。

我們上面新增的索引是唯一聚集索引,因此當插入的資料在employeeid欄位出現重複時會報錯。假如我們在建立索引之前資料字段出現重複,那麼就不能建立唯一索引。

執行如下sql語句

update emp_pay set employeeid=

7where employeeid=

1;

然後再次執行全表查詢,我們發現查詢結果如下所示:

只要我們更新了employeeid,那麼最後的更新結果都會按照employeeid的值進行公升序排序。這是因為我們在employeeid上建立了索引的緣故。

我們可以通過sql server management studio這個工具刪除索引,也可以通過sql語句進行索引的刪除,假設我們要求刪除在前面建立的索引employeeid_ind,那麼sql語句如下**所示:

drop

index employeeid_ind on emp_pay;

SQL 索引 建立索引

create index 語句用於在表中建立索引。在不讀取整個表的情況下,索引使資料庫應用程式可以更快地查詢資料。您可以在表中建立索引,以便更加快速高效地查詢資料。使用者無法看到索引,它們只能被用來加速搜尋 查詢。注釋 更新乙個包含索引的表需要比更新乙個沒有索引的表更多的時間,這是由於索引本身也需要...

索引和索引例項分析

資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。就像我們以前用的新華字典的目錄一樣,能幫助我們快速查詢到某乙個字。分類角度 索引名稱 資料結構 b 樹,hash索引,r tree等 儲存層面 聚簇索引,非聚簇索引 邏輯層面 主鍵索引,普通索引,復合索引,唯一索引...

SQL優化(SQL 索引)

檢視表定義 show create table users 檢視表的索引 show index from users 你要獲取第乙個表的所有資訊,你說全表掃瞄快呢還是索引掃瞄快呢?所以當你查詢庫 包括left join中的臨時庫 的所有資訊時,資料庫會選擇最優方法 全表掃瞄!s表dept id na...