首頁 資料庫 mysql教程 SQL Server 索引介绍

SQL Server 索引介绍

Jun 07, 2016 pm 06:06 PM
server sql 索引

数据库索引是对数据表中一个或多个列的值进行排序的结构,就像一本书的目录一样,索引提供了在行中快速查询特定行的能力

一,索引的概述

1,概念: 数据库索引是对数据表中一个或多个列的值进行排序的结构,就像一本书的目录一样,索引提供了在行中快速查询特定行的能力.

2,优缺点:

2.1优点: 1,大大加快搜索数据的速度,这是引入索引的主要原因.

2,创建唯一性索引,保证数据库表中每一行数据的唯一性.

3,加速表与表之间的连接,特别是在实现数据的参考完整性方面特别有意义.

4,在使用分组和排序子句进行数据检索时,同样可以减少其使用时间.

2,2缺点: 1,索引需要占用物理空间,聚集索引占的空间更大.

2,创建索引和维护索引需要耗费时间,这种时间会随着数据量的增加而增加.

3,当向一个包含索引的列的数据表中添加或者修改记录时,SQL server 会修改和维护相应的索引,这样增加系统的额外开销,降低处理速度。

3,索引的分类:

1,按存储结构可分为:

a,聚集索引:指物理存储顺序与索引顺序完全相同,它由上下两层组成,上层为索引页,下层为数据页,只有一种排序方式,因此每个表中只能创建一个聚集索引。

b,非聚集索引:指存储的数据顺序一般和表的物理数据的存储结构不同。通过下表我们可以分析出:(其中在学号上建立非聚集索引)

2,根基索引键值是否唯一,可以判定是否为唯一索引;基于多个字段的组合创建索引的为组合索引。二,索引的操作:

1,创建:(1),原则:a,只有表的所有者可以在同一个表中创建索引;

b,每个表中只可以创建一个聚集索引;

c,每个表中最多可以创建249个非聚集索引;

d,在经常查询的字段上建立索引;

e,定义text,image和bit数据类型的裂伤不能创建索引;

f,在外键列上可以创建索引,主键上一定要有索引;

g,在那些重复值比较多的,查询较少的列上不要建立索引。

(2),方法:a,使用SQL server Management Studio创建索引。

b,使用T-SQL语句中的create Index语句创建索引

c,使用Create table或者alter Table语句为表列定义主键约束或者唯一性约束时,会自动创建主键索引和惟一索引。

这里说说T-sql语句创建索引:

语法:

代码如下:create relational index create[unique][clustered|nonclustered] index index_name on(cloumn[asc|desc][,……n]) [include (column_name[,……n])] [with([,……n])] [onfilegroup_name]

说明:1,include (column_name[,……n])指定要添加到非聚集索引的叶级别的非键列。

2,on filegroup_name,为指定文件组创建指定索引。

例如:在course表中,对“课程代号”列创建聚集索引zindex.

代码如下:use db_student create clustered index zindex on course(课程代号)


2,查看索引:(1),使用SQL ServerManagement Studio查看索引信息

(2),使用系统存储过程查询索引信息,用SP_helpindex可以返回表中的所有索引信息

例如:查看course表的索引信息

use db_student execsp_helpindex course[/code] 
<P><BR> 3,修改索引:</P> 
<P> (1),在SQL Server Management Studio 中修改索引</P> 
<P> (2),使用Alter Index语句修改索引</P> 
<P> 在这里为大家举一个例子:</P> 
<P> 在course数据表中,修改所有的索引,并指定选项</P> 
<P></P> 代码如下:use db_student alterindex all on course rebuild with (fillfactor=80,sort_in_tempdb=on,statistics_norecompute=on) 
<P><BR> 4,删除索引:</P> 
<P> (1),使用SQL Server Management Studio 删除索引</P> 
<P> (2),使用Drop index语句删除索引</P> 
<P> 例如:在course表中,删除zindex索引</P> 
<P></P> 代码如下:use db_student drop index course.zindex 
<P><BR></P><STRONG>三,索引的分析和维护:</STRONG> 
<P></P> 
<P> 分析:1,使用showplan 语句</P> 
<P>语法:set showplan_all{on|off},set showplan_next{on|off}</P> 
<P> 例子:显示表course的课程代号,课程类型,课程内容,并显示查询过程</P> 
<P></P> 代码如下:use db_student set showplan_all on select 课程代号,课程类型 课程内容 from course where 课程内容='loving' 
<P><BR> 2,使用statistics io语句</P> 
<P> 语法:statistics io{on|off} on和off分别为显示和不显示,使用方法和上一样。</P> 
<P> 维护: 1,使用dbcc showcontig语句,显示指定表的数据和索引的碎片信息。当对表中进行大量修改或添加数据后,应该执行此语句查看有无碎片。</P> 
<P> 语法:dbcc showcontig[{table_name|table_id|view_name|view_id},index_name|index_id] with fast</P> 
<P> 2,使用dbcc dbreindex语句,意思是重建数据库中表的一个或多个索引。</P> 
<P> 语法:</P> 代码如下:dbcc dbreindex (['database.owner.table_name'[,index_name[,fillfactor]]]) [withno_infomsgs] 
<P>说明: database.owner.table_name,重新建立索引的表名</P> 
<P> index_name,是要重建的索引名</P> 
<P>fillfactor,要创建索引时每个索引页上要用于存储数据的空间百分比。</P> 
<P>with no_infomsgs,禁止显示所有信息性消息</P> 
<P> 
</P><P> 3,使用dbcc indexdefrag,整理指定的表或视图的聚集索引和辅助索引碎片。</P> 
<P> 语法:</P> 代码如下:dbcc indexdefrag ({database_name|database_id|0},{table_name|table_id|'view_name'|view_id},{index_name|index_id}) with no_infomsgs  
<P><BR> 总结,只有我们对索引有了充分了熟悉;我们掌握了索引的增删改查四项基本操作,学会利用SQL Server ManagerSdudio去实现这些功能,和学会利用T-SQL语句去实现(自我感觉利用SQL Server Manager Sdudio 简单一些);当然还要懂得学会分析和维护索引,这样才会更好的让它为咱们服务!</P>
登入後複製
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Hibernate 框架中 HQL 和 SQL 的差異是什麼? Hibernate 框架中 HQL 和 SQL 的差異是什麼? Apr 17, 2024 pm 02:57 PM

HQL和SQL在Hibernate框架中進行比較:HQL(1.物件導向語法,2.資料庫無關的查詢,3.類型安全),而SQL直接操作資料庫(1.與資料庫無關的標準,2.可執行複雜查詢和資料操作)。

Oracle SQL中除法運算的用法 Oracle SQL中除法運算的用法 Mar 10, 2024 pm 03:06 PM

《OracleSQL中除法運算的用法》在OracleSQL中,除法運算是常見的數學運算之一。在資料查詢和處理過程中,除法運算可以幫助我們計算欄位之間的比例或得出特定數值的邏輯關係。本文將介紹OracleSQL中除法運算的用法,並提供具體的程式碼範例。一、OracleSQL中除法運算的兩種方式在OracleSQL中,除法運算可以用兩種不同的方式來進行

Oracle與DB2的SQL語法比較與區別 Oracle與DB2的SQL語法比較與區別 Mar 11, 2024 pm 12:09 PM

Oracle和DB2是兩個常用的關聯式資料庫管理系統,它們都有自己獨特的SQL語法和特性。本文將針對Oracle和DB2的SQL語法進行比較與區別,並提供具體的程式碼範例。資料庫連接在Oracle中,使用以下語句連接資料庫:CONNECTusername/password@database而在DB2中,連接資料庫的語句如下:CONNECTTOdataba

詳解MyBatis動態SQL標籤中的Set標籤功能 詳解MyBatis動態SQL標籤中的Set標籤功能 Feb 26, 2024 pm 07:48 PM

MyBatis動態SQL標籤解讀:Set標籤用法詳解MyBatis是一個優秀的持久層框架,它提供了豐富的動態SQL標籤,可以靈活地建構資料庫操作語句。其中,Set標籤是用來產生UPDATE語句中SET子句的標籤,在更新作業中非常常用。本文將詳細解讀MyBatis中Set標籤的用法,以及透過具體的程式碼範例來示範其功能。什麼是Set標籤Set標籤用於MyBati

SQL中的identity屬性是什麼意思? SQL中的identity屬性是什麼意思? Feb 19, 2024 am 11:24 AM

SQL中的Identity是什麼,需要具體程式碼範例在SQL中,Identity是一種用於產生自增數字的特殊資料類型,它常用於唯一識別表中的每一行資料。 Identity欄位通常與主鍵列搭配使用,可確保每筆記錄都有獨一無二的識別碼。本文將詳細介紹Identity的使用方式以及一些實際的程式碼範例。 Identity的基本使用方式在建立表格時,可以使用Identit

如何安裝、解除安裝、重設Windows伺服器備份 如何安裝、解除安裝、重設Windows伺服器備份 Mar 06, 2024 am 10:37 AM

WindowsServerBackup是WindowsServer作業系統自帶的功能,旨在協助使用者保護重要資料和系統配置,並為中小型和企業級企業提供完整的備份和復原解決方案。只有執行Server2022及更高版本的使用者才能使用此功能。在本文中,我們將介紹如何安裝、解除安裝或重設WindowsServerBackup。如何重置Windows伺服器備份如果您的伺服器備份遇到問題,備份所需時間過長,或無法存取已儲存的文件,那麼您可以考慮重新設定WindowsServer備份設定。要重設Windows

SQL出現5120錯誤怎麼解決 SQL出現5120錯誤怎麼解決 Mar 06, 2024 pm 04:33 PM

解決方法:1、檢查登入使用者是否具有足夠的權限來存取或操作該資料庫,確保該使用者俱有正確的權限;2、檢查SQL Server服務的帳戶是否具有存取指定檔案或資料夾的權限,確保該帳戶具有足夠的權限來讀取和寫入該文件或資料夾;3、檢查指定的資料庫文件是否已被其他進程打開或鎖定,嘗試關閉或釋放該文件,並重新運行查詢;4、嘗試以管理員身份運行Management Studio等等。

如何使用SQL語句在MySQL中進行資料聚合和統計? 如何使用SQL語句在MySQL中進行資料聚合和統計? Dec 17, 2023 am 08:41 AM

如何使用SQL語句在MySQL中進行資料聚合和統計?在進行資料分析和統計時,資料聚合和統計是非常重要的步驟。 MySQL作為一個功能強大的關聯式資料庫管理系統,提供了豐富的聚合和統計函數,可以很方便地進行資料聚合和統計操作。本文將介紹使用SQL語句在MySQL中進行資料聚合和統計的方法,並提供具體的程式碼範例。一、使用COUNT函數進行計數COUNT函數是最常用

See all articles