SqlServer--索引

索引的优点

   1、通过创建索引,可以保证数据库中每一行数据的唯一性。

   2、可以大大加快查询数据的速度,这也是创建索引的最主要原因。

   3、实现数据的参照完整性,可以加速表之间的连接。

   4、在使用分组、排序的时候,可以减少查询中分组、排序的时间。

弊端

 1、创建索引和维护索引需耗费时间,随着数据量的增加维护索引的时间也会增加。

 2、索引跟table一样会占用一定的物理空间,若是在数据库中有大量的索引,索引文件可能比数据文件更快达到文件最大容量(尺寸)。

 3、当对表中的数据进行增、删、改这些操作时,索引也要动态地维护,这样就降低了数据的维护速度。

 

索引的分类

聚集索引、非聚集索引

 聚集索引

      按照table中的数据表中一定存储的顺序,基于table中的数据行。

特点

       1、一个table中只能有一个聚集索引。

       2、表中的物理顺序跟聚集索引的顺序是一样的,创建任何非聚集索引之前一定要先创建聚集索引,因为非聚集索引改变了table中行的物理顺序。

       3、关键值使用唯一性的UNIQUE关键字或者内部唯一标识符明确维护。一定要是惟一的标识符

       4、在创建索引的过程中,SQL Server临时使用当前数据库的磁盘空间,要保证磁盘由足够的空间。

 索引分为这几种

   索引视图、XML索引、唯一索引、组合索引、聚集索引、非聚集索引、筛选索引、空间索引、全文索引、包含列索引

   注 组合索引的条件字段最好不要超过4个,假设超过4个,就换成多个简单的组合索引

创建索引的原则

  建议不创索引

       数据量少的table不创,避免在多列创建索引,列中的相同值少的不创

建议创的

       数据量多,相同值少,在频繁进行组合、排序的列上建立组合索引(4个字段就不建组合索引)

       当数据为table中唯一性数据,引用唯一索引可以提高查询速度

 

UNIQUE  在表或视图中创建唯一性索引,唯一索引不允许两行具有相同的索引建值,视图的聚集索引必须为唯一。

CLUSTERED  为表或视图创建聚集索引,在创建聚集索引的时候同时会重新生成现有表中的所有非聚集索引。

NONCLUSTERED  创建非聚集索引,聚集索引按照table中字段的排序,快速准确的找到所需值。非聚集索引先找到一个大的区域,再缩小范围去找值。

index_name     指定索引的名称  在视图(表)中索引名称必须是唯一的

ON  指定索引所属的表或视图

Column   指定索引基于一列或多列。指定两个或多个列名。组合索引

ASC  DESC 索引进行排序

DROP_EXISTING  指定删除的索引并重新生成已命名的先前存在的聚集和非聚集索引。

 

 

创建一个Table叫 authors

create table authors

(

  auth_id  int  identity(1,1)not null,

  auth_name  varchar(20) not null,  

  auth_gender  tinyint  not null,

  auth_phone  varchar(20) null,

  auth_note  varchar(100) null

);

 

在authors表中的auth_phone列上,创建一个名称为IdX_phone的唯一索引,降序排序,填充因子为30%。

 

CREATE  UNIQUE  NONCLUSTERED  INDEX IdX_phone

ON authors(auth_phone DESC)

WITH

FILLFACTOR=30;

 

在authors表中的auth_phone列上,创建一个名称为IdX_nameAndgender的唯一非聚集组合索引,升序排序,填充因子为10%。

 

CREATE UNIQUE NONCLUSTERED INDEXC IdX_nameAndgender 

ON authors(auth_name,auth_gender)

WITH

FILLFACTOR=10;

 

 

记一记流水账

SqlServer--索引

上一篇:MySQL 性能优化之慢查询


下一篇:屡试屡爽的linux无图形化安装oracle操作流程