SQL Server 索引介紹_Mssql數(shù)據(jù)庫教程
推薦:SQL Server 數(shù)據(jù)庫安全管理介紹對于數(shù)據(jù)庫應(yīng)用程序,數(shù)據(jù)庫的安全是至關(guān)重要的。SQL Server的安全功能可以保護(hù)數(shù)據(jù)免受未經(jīng)授權(quán)的泄漏和篡改!下邊是對安全一章的總結(jié)
一,索引的概述1,概念: 數(shù)據(jù)庫索引是對數(shù)據(jù)表中一個(gè)或多個(gè)列的值進(jìn)行排序的結(jié)構(gòu),就像一本書的目錄一樣,索引提供了在行中快速查詢特定行的能力.
2,優(yōu)缺點(diǎn):
2.1優(yōu)點(diǎn): 1,大大加快搜索數(shù)據(jù)的速度,這是引入索引的主要原因.
2,創(chuàng)建唯一性索引,保證數(shù)據(jù)庫表中每一行數(shù)據(jù)的唯一性.
3,加速表與表之間的連接,特別是在實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面特別有意義.
4,在使用分組和排序子句進(jìn)行數(shù)據(jù)檢索時(shí),同樣可以減少其使用時(shí)間.
2,2缺點(diǎn): 1,索引需要占用物理空間,聚集索引占的空間更大.
2,創(chuàng)建索引和維護(hù)索引需要耗費(fèi)時(shí)間,這種時(shí)間會(huì)隨著數(shù)據(jù)量的增加而增加.
3,當(dāng)向一個(gè)包含索引的列的數(shù)據(jù)表中添加或者修改記錄時(shí),SQL server 會(huì)修改和維護(hù)相應(yīng)的索引,這樣增加系統(tǒng)的額外開銷,降低處理速度。
3,索引的分類:
1,按存儲(chǔ)結(jié)構(gòu)可分為:
a,聚集索引:指物理存儲(chǔ)順序與索引順序完全相同,它由上下兩層組成,上層為索引頁,下層為數(shù)據(jù)頁,只有一種排序方式,因此每個(gè)表中只能創(chuàng)建一個(gè)聚集索引。
b,非聚集索引:指存儲(chǔ)的數(shù)據(jù)順序一般和表的物理數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)不同。通過下表我們可以分析出:(其中在學(xué)號(hào)上建立非聚集索引)
2,根基索引鍵值是否唯一,可以判定是否為唯一索引;基于多個(gè)字段的組合創(chuàng)建索引的為組合索引。二,索引的操作:1,創(chuàng)建:(1),原則:a,只有表的所有者可以在同一個(gè)表中創(chuàng)建索引;
b,每個(gè)表中只可以創(chuàng)建一個(gè)聚集索引;
c,每個(gè)表中最多可以創(chuàng)建249個(gè)非聚集索引;
d,在經(jīng)常查詢的字段上建立索引;
e,定義text,image和bit數(shù)據(jù)類型的裂傷不能創(chuàng)建索引;
f,在外鍵列上可以創(chuàng)建索引,主鍵上一定要有索引;
g,在那些重復(fù)值比較多的,查詢較少的列上不要建立索引。
(2),方法:a,使用SQL server Management Studio創(chuàng)建索引。
b,使用T-SQL語句中的create Index語句創(chuàng)建索引
c,使用Create table或者alter Table語句為表列定義主鍵約束或者唯一性約束時(shí),會(huì)自動(dòng)創(chuàng)建主鍵索引和惟一索引。
這里說說T-sql語句創(chuàng)建索引:
語法:
說明:1,include (column_name[,……n])指定要添加到非聚集索引的葉級(jí)別的非鍵列。
2,on filegroup_name,為指定文件組創(chuàng)建指定索引。
例如:在course表中,對“課程代號(hào)”列創(chuàng)建聚集索引zindex.
2,查看索引:(1),使用SQL ServerManagement Studio查看索引信息
(2),使用系統(tǒng)存儲(chǔ)過程查詢索引信息,用SP_helpindex可以返回表中的所有索引信息
例如:查看course表的索引信息
use db_student execsp_helpindex course[/code]
3,修改索引:(1),在SQL Server Management Studio 中修改索引
(2),使用Alter Index語句修改索引
在這里為大家舉一個(gè)例子:
在course數(shù)據(jù)表中,修改所有的索引,并指定選項(xiàng)
復(fù)制代碼 代碼如下:m.dounai2.comuse db_student alterindex all on course rebuild with (fillfactor=80,sort_in_tempdb=on,statistics_norecompute=on)
4,刪除索引:(1),使用SQL Server Management Studio 刪除索引
(2),使用Drop index語句刪除索引
例如:在course表中,刪除zindex索引
復(fù)制代碼 代碼如下:m.dounai2.comuse db_student drop index course.zindex三,索引的分析和維護(hù):
分析:1,使用showplan 語句
語法:set showplan_all{on|off},set showplan_next{on|off}
例子:顯示表course的課程代號(hào),課程類型,課程內(nèi)容,并顯示查詢過程
復(fù)制代碼 代碼如下:m.dounai2.comuse db_student set showplan_all on select 課程代號(hào),課程類型 課程內(nèi)容 from course where 課程內(nèi)容='loving'
2,使用statistics io語句語法:statistics io{on|off} on和off分別為顯示和不顯示,使用方法和上一樣。
維護(hù): 1,使用dbcc showcontig語句,顯示指定表的數(shù)據(jù)和索引的碎片信息。當(dāng)對表中進(jìn)行大量修改或添加數(shù)據(jù)后,應(yīng)該執(zhí)行此語句查看有無碎片。
語法:dbcc showcontig[{table_name|table_id|view_name|view_id},index_name|index_id] with fast
2,使用dbcc dbreindex語句,意思是重建數(shù)據(jù)庫中表的一個(gè)或多個(gè)索引。
語法:
復(fù)制代碼 代碼如下:m.dounai2.comdbcc dbreindex (['database.owner.table_name'[,index_name[,fillfactor]]]) [withno_infomsgs]說明: database.owner.table_name,重新建立索引的表名
index_name,是要重建的索引名
fillfactor,要?jiǎng)?chuàng)建索引時(shí)每個(gè)索引頁上要用于存儲(chǔ)數(shù)據(jù)的空間百分比。
with no_infomsgs,禁止顯示所有信息性消息
3,使用dbcc indexdefrag,整理指定的表或視圖的聚集索引和輔助索引碎片。
語法:
復(fù)制代碼 代碼如下:m.dounai2.comdbcc indexdefrag ({database_name|database_id|0},{table_name|table_id|'view_name'|view_id},{index_name|index_id}) with no_infomsgs
總結(jié),只有我們對索引有了充分了熟悉;我們掌握了索引的增刪改查四項(xiàng)基本操作,學(xué)會(huì)利用SQL Server ManagerSdudio去實(shí)現(xiàn)這些功能,和學(xué)會(huì)利用T-SQL語句去實(shí)現(xiàn)(自我感覺利用SQL Server Manager Sdudio 簡單一些);當(dāng)然還要懂得學(xué)會(huì)分析和維護(hù)索引,這樣才會(huì)更好的讓它為咱們服務(wù)!
分享:SQL server 視圖(view)介紹視圖是一種常用的數(shù)據(jù)庫對象,它將查詢的結(jié)果以虛擬表的形式存儲(chǔ)在數(shù)據(jù)中
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- SQL Server不存在或訪問被拒絕 Windows里的一個(gè)bug
- 解讀sql中獲得部分時(shí)間的方法
- 解讀數(shù)據(jù)庫設(shè)計(jì)正規(guī)化的五大范式
- 探討SQL Server 2005.NET CLR編程
- where條件順序不同、性能不同示例探討
- 解決sql server查詢速度慢11個(gè)方法
- 談SQL將挑戰(zhàn)操作系統(tǒng)安全
- 如何使用SQL Server 2008升級(jí)顧問
- SQL Server COALESCE()函數(shù)的創(chuàng)新應(yīng)用
- 怎樣用VB存取SQL Server中的圖像數(shù)據(jù)
猜你也喜歡看這些
- 總結(jié)MySQL建表、查詢優(yōu)化的一些實(shí)用小技巧
- 解決sql server 2005 express中sa不能登錄
- Java連接MySql的詳細(xì)介紹
- MySQL 關(guān)于表復(fù)制 insert into 語法的詳細(xì)介紹
- 擁有5星評(píng)級(jí)數(shù)據(jù)庫表結(jié)構(gòu) 如何才能更高效的使用?
- PHP mysqli擴(kuò)展庫 預(yù)處理技術(shù)的使用分析
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- CentOS6.4系統(tǒng)中Mysql數(shù)據(jù)庫卸載、安裝與配置
- mysql服務(wù)器字符集查詢和設(shè)置方法
- 30種mysql優(yōu)化sql語句查詢的方法
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-SQL Server 索引介紹。