這要看你的數(shù)據(jù)如何規(guī)劃,訪問時主要以什么方式。

創(chuàng)新互聯(lián)公司是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站模板,微信公眾號開發(fā),軟件開發(fā),微信平臺小程序開發(fā),10余年建站對成都公路鉆孔機等多個行業(yè),擁有多年建站經(jīng)驗。
如果主要是以varchar列進(jìn)行查詢,就按varchar列建立聚集索引,按int列建立非聚集索引。
如果主要是按int列進(jìn)行排序查詢,就按int列建立聚集索引,按varchar列建立非聚集索引。
(注意上面說的int列不是主鍵,是你用來排序的列。)
配置數(shù)據(jù)庫索引是門很高深的學(xué)問,有興趣的話可以多搜索下相關(guān)資料。我都只是一知半解呢:)
不同數(shù)據(jù)庫中提供了不同的索引類型,SQLServer中的索引有兩種:聚集索引(CLUSTERED)和非聚集索引(NONCLUSTERED)。
索引區(qū)別:
聚集索引:
聚集索引基于數(shù)據(jù)行的鍵值,在表內(nèi)排序和存儲這些數(shù)據(jù)行。每個表只能有一個聚集索引,應(yīng)為數(shù)據(jù)行本分只能按一個順序存儲。
在聚集索引中,表中各行的物理順序與索引鍵值的邏輯(索引)順序相同。聚集索引通常可加快UPDATE和DELETE操作的速度,因為這兩個操作需要讀取大量的數(shù)據(jù)。創(chuàng)建或修改聚集索引可能要花很長時間,因為執(zhí)行這兩個操作時要在磁盤上對表的行進(jìn)行重組。
非聚集索引:
因為一個表中只能有一個聚集索引,如果需要在表中建立多個索引,則可以創(chuàng)建為非聚集索引。表中的數(shù)據(jù)并不按照非聚集索引列的順序存儲,但非聚集索引的索引行中保存了非聚集鍵值和行定位器,可以快捷地根據(jù)非聚集鍵的值來定位記錄的存儲位置。
延伸閱讀:
無論是聚集索引,還是非聚集索引,都可以是唯一索引(UNIQUE)
。在SQL Server中,當(dāng)唯一性是數(shù)據(jù)本身的特點時,可創(chuàng)建唯一索引,但索引列的組合不同于表的主鍵。例如,如果要頻繁查詢表a(該表主鍵為列a_id)的列a_name,而且要保證姓名是唯一的,則在列a_name上創(chuàng)建唯一索引。如果用戶為多個員工輸入了相同的姓名,則數(shù)據(jù)庫顯示錯誤,并且不能保存該表。
聚集索引確定表中數(shù)據(jù)的物理順序。聚集索引類似于電話簿,后者按姓氏排列數(shù)據(jù)。由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進(jìn)行組織一樣。
聚集索引對于那些經(jīng)常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個值的行后,便可以確保包含后續(xù)索引值的行在物理相鄰。例如,如果應(yīng)用程序執(zhí)行的一個查詢經(jīng)常檢索某一日期范圍內(nèi)的記錄,則使用聚集索引可以迅速找到包含開始日期的行,然后檢索表中所有相鄰的行,直到到達(dá)結(jié)束日期。這樣有助于提高此類查詢的性能。同樣,如果對從表中檢索的數(shù)據(jù)進(jìn)行排序時經(jīng)常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢該列時都進(jìn)行排序,從而節(jié)省成本。
非聚集索引與課本中的索引類似。數(shù)據(jù)存儲在一個地方,索引存儲在另一個地方,索引帶有指針指向數(shù)據(jù)的存儲位置。索引中的項目按索引鍵值的順序存儲,而表中的信息按另一種順序存儲(這可以由聚集索引規(guī)定)。如果在表中未創(chuàng)建聚集索引,則無法保證這些行具有任何特定的順序。
也就是說:聚集是物理排序。而非聚集是不用將表和視圖進(jìn)行物理排序。
也個表或視圖中最多有250個非聚集排序或有249個非聚集排序一個聚集排序。
Sqlserver 2008中索引在每次表插入新數(shù)據(jù)的時候都會自動更新。
SQL索引有兩種,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系統(tǒng)的性能,加快數(shù)據(jù)的查詢速度與減少系統(tǒng)的響應(yīng)時間
下面舉兩個簡單的例子:
圖書館的例子:一個圖書館那么多書,怎么管理呢?建立一個字母開頭的目錄,例如:a開頭的書,在第一排,b開頭的在第二排,這樣在找什么書就好說了,這個就是一個聚集索引,可是很多人借書找某某作者的,不知道書名怎么辦?圖書管理員在寫一個目錄,某某作者的書分別在第幾排,第幾排,這就是一個非聚集索引
字典的例子:字典前面的目錄,可以按照拼音和部首去查詢,我們想查詢一個字,只需要根據(jù)拼音或者部首去查詢,就可以快速的定位到這個漢字了,這個就是索引的好處,拼音查詢法就是聚集索引,部首查詢就是一個非聚集索引.
看了上面的例子,下面的一句話就很容易理解了:聚集索引存儲記錄是物理上連續(xù)存在,而非聚集索引是邏輯上的連續(xù),物理存儲并不連續(xù)。就像字段,聚集索引是連續(xù)的,a后面肯定是b,非聚集索引就不連續(xù)了,就像圖書館的某個作者的書,有可能在第1個貨架上和第10個貨架上。還有一個小知識點就是:聚集索引一個表只能有一個,而非聚集索引一個表可以存在多個。
你說的應(yīng)該是在企業(yè)管理器里設(shè)計表的時候的“標(biāo)識”屬性吧 ?
標(biāo)識只能用于數(shù)字類型,你的字段時nvchar型的,肯定不能設(shè)置標(biāo)識屬性。
如果要達(dá)到你所說的排序的目的,你必須在這個日期列上建一個聚集索引。
不過將字段類型選為nvchar類型是不太好的。
因為,加入你的表中存在這樣兩行
2006-2-1
2006-11-1
2006-11-1會排在2006-2-1前邊。
所以要達(dá)到排序目的,你必須把日期字段定義為datetime或smalldatetime類型。
創(chuàng)建聚集索引的方法是,右擊所選的表,然后選擇“所有任務(wù)”-管理索引。
然后在日期字段上新建一個聚集索引就可以了。
另外每個表只能有一個聚集索引,這點要特別注意。
(1)在SQL Server Management Studio中,選擇并右擊要創(chuàng)建索引的表,從彈出菜單中選擇“設(shè)計”,打開表設(shè)計器。右鍵單擊表設(shè)計器,從彈出菜單中選擇“索引/鍵”命令,打開“索引/鍵”對話框。對話框中列出了已經(jīng)存在的索引,如下圖所示。
(2)單擊“添加”按鈕。在“選定的主/唯一鍵或索引”框顯示系統(tǒng)分配給新索引的名稱。
(3)在“列”屬性下選擇要創(chuàng)建索引的列。可以選擇多達(dá)16列。為獲得最佳性能,最好只選擇一列或兩列。對所選的每一列,可指出索引是按升序還是降序組織列值。
(4)如果要創(chuàng)建唯一索引,則在“是唯一的”屬性中選擇“是”。
(5)設(shè)置完成后,單擊“確定”按鈕。
(6)當(dāng)保存表時,索引即創(chuàng)建在數(shù)據(jù)庫中。
使用CREATE INDEX語句創(chuàng)建索引:
復(fù)制內(nèi)容到剪貼板
代碼:
CREATE[ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX索引名
ON {表名|視圖名} (列名[ ASC | DESC ] [ ,...n ] )
例:
在數(shù)據(jù)庫HrSystem中為表Employees創(chuàng)建基于IDCard列的唯一索引IX_Employees,可以使用以下命令:
復(fù)制內(nèi)容到剪貼板
代碼:
USE HrSystem
GO
CREATE UNIQUE NONCLUSTERED INDEX [IX_Employees]ONdbo.Employees(IdCard)
GO
例:
為表Employees創(chuàng)建基于列IDCard的唯一、聚集索引IX_Employees1,可以使用以下命令:
復(fù)制內(nèi)容到剪貼板
代碼:
USE HrSystem
GO
CREATE UNIQUE CLUSTERED INDEX [IX_Employees1] ON [dbo].[Employees](IdCard)
GO
需要注意的是,在一個表中只允許存在一個聚集索引。因此,如果表Employees中已經(jīng)存在一個聚集索引,則執(zhí)行上面的語句時將會提示下面的錯誤信息。
消息1902,級別16,狀態(tài)3,第1行
無法對表'dbo.Employees'創(chuàng)建多個聚集索引。請在創(chuàng)建新聚集索引前刪除現(xiàn)有的聚集索引'PK__Employee__263E2DD300551192'。 例:
對表Employees的列Emp_name按照降序創(chuàng)建索引,可以使用以下命令:
復(fù)制內(nèi)容到剪貼板
代碼:
USE HrSystem
GO
CREATENONCLUSTERED INDEX [IX_Employees2] ON [dbo].[Employees]
(
[Emp_name] DESC
)
GO
在CREATE INDEX語句中使用INCLUDE子句,可以在創(chuàng)建索引時定義包含的非鍵列,其語法結(jié)構(gòu)如下:
復(fù)制內(nèi)容到剪貼板
代碼:
CREATENONCLUSTERED INDEX 索引名
ON { 表名| 視圖名 } ( 列名 [ ASC | DESC ] [ ,...n ] )
INCLUDE (列名1, 列名2, [,… n])
例: 在表Employees上創(chuàng)建非聚集索引IX_Wage,索引中的鍵列為Wage,非鍵列為Emp_name、Sex和Title,具體語句如下:
復(fù)制內(nèi)容到剪貼板
代碼:
USEHrSystem
GO
CREATENONCLUSTERED INDEX IX_Wage
ON Employees ( Wage )
INCLUDE (Emp_name, Sex, Title)
GO
例: 在創(chuàng)建索引IX_Wage后,當(dāng)表Employees中的數(shù)據(jù)量比較大時,執(zhí)行下面的SELECT語句將會明顯地改進(jìn)查詢效率。
復(fù)制內(nèi)容到剪貼板
代碼:
USEHrSystem
GO
SELECTEmp_name, Sex, Title, Wage
FROMEmployees
WHEREWage BETWEEN 1000 AND 3000
GO
修改索引:
在SQL Server Management Studio中,選擇并右擊要創(chuàng)建索引的表,從彈出的菜單中選擇“設(shè)計表”,打開表設(shè)計器。右鍵單擊表設(shè)計器,從彈出菜單中選擇“索引/鍵”命令,打開“索引/鍵”對話框,并查看已經(jīng)存在的索引及修改索引的屬性信息。
也可以使用ALTER INDEX語句修改索引,其基本語法如下:
復(fù)制內(nèi)容到剪貼板
代碼:
ALTER INDEX { 索引名| ALL }
ON 表名|視圖名
{ REBUILD | DISABLE | REORGANIZE }[ ; ]
ALTER INDEX語句的參數(shù)比較復(fù)雜,這里只介紹它的基本使用情況。參數(shù)說明如下:
REBUILD指定重新生成索引。 DISABLE指定將索引標(biāo)記為已禁用。 REORGANIZE指定將重新組織的索引葉級。
例:
要禁用索引IX_Employees,可以使用下面的語句:
復(fù)制內(nèi)容到剪貼板
代碼:
USE HrSystem
GO
ALTERINDEX IX_Employees ON Employees DISABLE
GO
刪除索引:
在SQL Server Management Studio中,選擇并右擊要創(chuàng)建索引的表,從彈出的菜單中選擇“設(shè)計表”。打開表設(shè)計器。右鍵單擊表設(shè)計器,從彈出菜單中選擇“索引/鍵”命令,在打開的“索引/鍵”對話框中列出了已經(jīng)存在的索引。單擊“刪除”按鈕,即可刪除索引信息。
復(fù)制內(nèi)容到剪貼板
代碼:
DROP INDEX 表名.索引名|視圖名.索引名[ ,...n ]
總結(jié):
o(1)索引并非越多越好,一個表中如果有大量的索引,不僅占用大量的磁盤空間,而且會影響INSERT、DELETE、UPDATE等語句的性能。因為當(dāng)表中數(shù)據(jù)更改的同時,索引也會進(jìn)行調(diào)整和更新。
o(2)避免對經(jīng)常更新的表進(jìn)行過多的索引,并且索引中的列盡可能少。而對經(jīng)常用于查詢的字段應(yīng)該創(chuàng)建索引,但要避免添加不必要的字段。
o(3)數(shù)據(jù)量小的表最好不要使用索引,由于數(shù)據(jù)較少,查詢花費的時間可能比遍歷索引的時間還要短,索引可能不會產(chǎn)生優(yōu)化效果。
o(4)在條件表達(dá)式中經(jīng)常用到的、不同值較多的列上建立索引,在不同值少的列上不要建立索引。比如在學(xué)生表的“性別”字段上只有“男”與“女”兩個不同值,因此就無須建立索引。如果建立索引,不但不會提高查詢效率,反而會嚴(yán)重降低更新速度。
o(5)當(dāng)唯一性是某種數(shù)據(jù)本身的特征時,指定唯一索引。使用唯一索引能夠確保定義的列的數(shù)據(jù)完整性,提高查詢速度。
o(6)在頻繁進(jìn)行排序或分組(即進(jìn)行GROUPBY或ORDERBY操作)的列上建立索引,如果待排序的列有多個,可以在這些列上建立組合索引。
名稱欄目:sqlserver更改聚集索引,修改聚集索引
文章起源:http://chinadenli.net/article9/dseosoh.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、網(wǎng)站設(shè)計公司、商城網(wǎng)站、建站公司、網(wǎng)站導(dǎo)航、用戶體驗
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)