亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

SQL Server數據庫索引的應用

添加時間:2014-4-20 15:18:32  添加: 思海網絡 

一、索引的概念

SQL Server數據庫索引就是加快檢索表中數據的方法。數據庫的索引類似于書籍的索引。在書籍中,索引允許用戶不必翻閱完整個書就能迅速地找到所需要的信息。在數據庫中,索引也允許數據庫程序迅速地找到表中的數據,而不必掃描整個數據庫。

二、索引的特點

1.索引可以加快數據庫的檢索速度

2.索引降低了數據庫插入、修改、刪除等維護任務的速度

3.索引創建在表上,不能創建在視圖上

4.索引既可以直接創建,也可以間接創建

5.可以在優化隱藏中,使用索引

6.使用查詢處理器執行SQL語句,在一個表上,一次只能使用一個索引

7.其他

三、索引的優點

1.創建唯一性索引,保證數據庫表中每一行數據的唯一性

2.大大加快數據的檢索速度,這也是創建索引的最主要的原因

3.加速表和表之間的連接,特別是在實現數據的參考完整性方面特別有意義。

4.在使用分組和排序子句進行數據檢索時,同樣可以顯著減少查詢中分組和排序的時間。

5.通過使用索引,可以在查詢的過程中使用優化隱藏器,提高系統的性能。

四、索引的缺點

1.創建索引和維護索引要耗費時間,這種時間隨著數據量的增加而增加

2.索引需要占物理空間,除了數據表占數據空間之外,每一個索引還要占一定的物理空間,如果要建立聚簇索引,那么需要的空間就會更大

3.當對表中的數據進行增加、刪除和修改的時候,索引也要動態的維護,降低了數據的維護速度

五、索引分類

1.直接創建索引和間接創建索引

直接創建索引: CREATE INDEX mycolumn_index ON mytable (myclumn)

間接創建索引:定義主鍵約束或者唯一性鍵約束,可以間接創建索引

2.普通索引和唯一性索引

普通索引:

CREATE INDEX mycolumn_index ON mytable (myclumn)

唯一性索引:保證在索引列中的全部數據是唯一的,對聚簇索引和非聚簇索引都可以使用

CREATE UNIQUE COUSTERED INDEX myclumn_cindex ON mytable(mycolumn)

3.單個索引和復合索引

單個索引:即非復合索引

復合索引:又叫組合索引,在索引建立語句中同時包含多個字段名,最多16個字段

CREATE INDEX name_index ON username(firstname,lastname)

4.聚簇索引和非聚簇索引(聚集索引,群集索引)

聚簇索引:物理索引,與基表的物理順序相同,數據值的順序總是按照順序排列

CREATE CLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn) WITH

ALLOW_DUP_ROW(允許有重復記錄的聚簇索引)

非聚簇索引:

CREATE UNCLUSTERED INDEX mycolumn_cindex ON mytable(mycolumn)

六、索引的使用

1.當字段數據更新頻率較低,查詢使用頻率較高并且存在大量重復值是建議使用聚簇索引

2.經常同時存取多列,且每列都含有重復值可考慮建立組合索引

3.復合索引的前導列一定好控制好,否則無法起到索引的效果。如果查詢時前導列不在查詢條件中則該復合索引不會被使用。前導列一定是使用最頻繁的列

4.多表操作在被實際執行前,查詢優化器會根據連接條件,列出幾組可能的連接方案并從中找出系統開銷最小的最佳方案。連接條件要充份考慮帶有索引的表、行數多的表;內外表的選擇可由公式:外層表中的匹配行數靠內層表中每一次查找的次數確定,乘積最小為最佳方案

5.where子句中對列的任何操作結果都是在sql運行時逐列計算得到的,因此它不得不進行表搜索,而沒有使用該列上面的索引;如果這些結果在查詢編譯時就能得到,那么就可以被sql優化器優化,使用索引,避免表搜索。

例:

以下為引用的內容:
select * from record where substring(card_no,1,4)=’5378’
            && select * from record where card_no like ’5378%’

任何對列的操作都將導致表掃描,它包括數據庫函數、計算表達式等等,查詢時要盡可能將操作移至等號右邊

6.where條件中的’in’在邏輯上相當于’or’,所以語法分析器會將in ('0','1')轉化為column='0' or column='1'來執行。我們期望它會根據每個or子句分別查找,再將結果相加,這樣可以利用column上的索引;但實際上它卻采用了"or策略",即先取出滿足每個or子句的行,存入臨時數據庫的工作表中,再建立唯一索引以去掉重復行,最后從這個臨時表中計算結果。因此,實際過程沒有利用column上索引,并且完成時間還要受tempdb數據庫性能的影響。in、or子句常會使用工作表,使索引失效;如果不產生大量重復值,可以考慮把子句拆開;拆開的子句中應該包含索引

7.要善于使用存儲過程,它使sql變得更加靈活和高效

關鍵字:SQL Server、數據庫、索引

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站