SQL 创建索引的作用以及如何创建索引
SQL?創(chuàng)建索引的作用以及如何創(chuàng)建索引
SQL?創(chuàng)建索引的作用
一、使用索引的優(yōu)點(diǎn):
1、通過唯一性索引(unique)可確保數(shù)據(jù)的唯一性
2、加快數(shù)據(jù)的檢索速度
3、加快表之間的連接
4、減少分組和排序時(shí)間
5、使用優(yōu)化隱藏器提高系統(tǒng)性能
二、使用索引的原則:
1、在需要經(jīng)常搜索的列上創(chuàng)建索引
2、主鍵上創(chuàng)建索引
3、經(jīng)常用于連接的列上創(chuàng)建索引
4、經(jīng)常需要根據(jù)范圍進(jìn)行搜索的列上創(chuàng)建索引
5、經(jīng)常需要排序的列上創(chuàng)建索引
6、經(jīng)常用于where子句的列上創(chuàng)建索引
三、不創(chuàng)建索引的原則:
1、查詢很少使用和參考的列不建索引
2、對(duì)只有少數(shù)值的列不建索引
3、定義為text、image、bit的列不建索引
4、當(dāng)需要update性能遠(yuǎn)遠(yuǎn)高于select性能時(shí)不應(yīng)建索引
四、常用的命令:
1、sp_helpindex?:報(bào)告表或視圖上的索引信息
2、dbcc?showcontig?:顯示指定表的數(shù)據(jù)和索引的碎片信息
3、dbcc?dbreindex?:重建指定數(shù)據(jù)庫中一個(gè)或多個(gè)索引
4、dbcc?indexdefrag?:整理指定表或視圖的聚集索引或輔助索引的碎片
五、優(yōu)化索引:
1、重建索引(dbcc?dbreindex)?
2、索引優(yōu)化向?qū)?/p>
3、整理指定的表或視圖的聚集索引和輔助索引碎片(dbcc?indexefrag)?
?
如何創(chuàng)建索引
CREATE?INDEX?語句用于在表中創(chuàng)建索引。
在不讀取整個(gè)表的情況下,索引使數(shù)據(jù)庫應(yīng)用程序可以更快地查找數(shù)據(jù)。?您可以在表中創(chuàng)建索引,以便更加快速高效地查詢數(shù)據(jù)。
用戶無法看到索引,它們只能被用來加速搜索/查詢。
注釋:1、更新一個(gè)包含索引的表需要比更新一個(gè)沒有索引的表更多的時(shí)間,這是由于索引本身也需要更新。因此,理想的做法是僅僅在常常被搜索的列(以及表)上面創(chuàng)建索引。
? ? ? ? ?2、唯一索引是指該字段不能有重復(fù)的值,而不是只能建立這一個(gè)索引。
?
進(jìn)入查詢窗口后,輸入下面的語句:?
CREATE INDEX mycolumn_index ON mytable (myclumn)?
這個(gè)語句建立了一個(gè)名為mycolumn_index的索引。你可以給一個(gè)索引起任何名字,但你應(yīng)該在索引名中包含所索引的字段名,這對(duì)你將來弄清楚建立該索引的意圖是有幫助的。?
注意:?
在本書中你執(zhí)行任何SQL語句,都會(huì)收到如下的信息:?
This command did not return data,and it did not return any rows?
這說明該語句執(zhí)行成功了。?
索引mycolumn_index對(duì)表mytable的mycolumn字段進(jìn)行。這是個(gè)非聚簇索引,也是個(gè)非唯一索引。(這是一個(gè)索引的缺省屬性)?
如果你需要改變一個(gè)索引的類型,你必須刪除原來的索引并重建 一個(gè)。建立了一個(gè)索引后,你可以用下面的SQL語句刪除它:?
DROP INDEX mytable.mycolumn_index?
注意在DROP INDEX 語句中你要包含表的名字。在這個(gè)例子中,你刪除的索引是mycolumn_index,它是表mytable的索引。?
要建立一個(gè)聚簇索引,可以使用關(guān)鍵字CLUSTERED。)記住一個(gè)表只能有一個(gè)聚簇索引。(這里有一個(gè)如何對(duì)一個(gè)表建立聚簇索引的例子:?
CREATE CLUSTERED INDEX mycolumn_clust_index ON mytable(mycolumn)?
如果表中有重復(fù)的記錄,當(dāng)你試圖用這個(gè)語句建立索引時(shí),會(huì)出現(xiàn)錯(cuò)誤。但是有重復(fù)記錄的表也可以建立索引;你只要使用關(guān)鍵字ALLOW_DUP_ROW把這一點(diǎn)告訴SQL Sever即可:?
CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)?
WITH ALLOW_DUP_ROW?
這個(gè)語句建立了一個(gè)允許重復(fù)記錄的聚簇索引。你應(yīng)該盡量避免在一個(gè)表中出現(xiàn)重復(fù)記錄,但是,如果已經(jīng)出現(xiàn)了,你可以使用這種方法。?
要對(duì)一個(gè)表建立唯一索引,可以使用關(guān)鍵字UNIQUE。對(duì)聚簇索引和非聚簇索引都可以使用這個(gè)關(guān)鍵字。這里有一個(gè)例子:?
CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)?
這是你將經(jīng)常使用的索引建立語句。無論何時(shí),只要可以,你應(yīng)該盡量對(duì)一個(gè)對(duì)一個(gè)表建立唯一聚簇索引來增強(qiáng)查詢操作。?
最后,要建立一個(gè)對(duì)多個(gè)字段的索引──復(fù)合索引──在索引建立語句中同時(shí)包含多個(gè)字段名。下面的例子對(duì)firstname和lastname兩個(gè)字段建立索引:?
CREATE INDEX name_index ON username(firstname,lastname)?
這個(gè)例子對(duì)兩個(gè)字段建立了單個(gè)索引。在一個(gè)復(fù)合索引中,你最多可以對(duì)16個(gè)字段進(jìn)行索引。?
用事務(wù)管理器建立索引?
用事務(wù)管理器建立索引比用SQL語句容易的多。使用事務(wù)管理器,你可以看到已經(jīng)建立的索引的列表,并可以通過圖形界面選擇索引選項(xiàng)。?
使用事務(wù)管理器你可以用兩種方式建立索引:使用Manage Tables窗口或使用Manage Indexes窗口。?
轉(zhuǎn)載于:https://www.cnblogs.com/len0031/p/3780920.html
總結(jié)
以上是生活随笔為你收集整理的SQL 创建索引的作用以及如何创建索引的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CSS3的学习--实现瀑布流
- 下一篇: SQL Server报“GUID应包含带