sql service添加索引

语法:
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO

/*实例*/
USE 库名
GO
IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME=‘IX_TEST_TNAME‘)--检测是否已经存在IX_TEST_TNAME索引
DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除

--创建索引
CREATE NONCLUSTERED INDEX IX_TEST_TNAME --创建一个非聚集索引
ON TEST(TNAME)  --为TEST表的TNAME字段创建索引
WITH FILLFACTOR = 30 --填充因子为30%
GO

SELECT * FROM TEST(INDEX = IX_TEST_TNAME) WHERE TNAME = ‘A‘ --指定按‘IX_TEST_TNAME’索引查询

总结:
      1.什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
  2.索引类型分类
     唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
     主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
     聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
     非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
    3.创建索引的标准:用语频繁搜索的列;用语对数据进行排序的列
注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。

CREATE INDEX (SQL Server Compact Edition)
   http://msdn.microsoft.com/zh-cn/library/ms345331(SQL.90).aspx

新增: 2015 年11 月 26 日

在指定的表上创建索引。可以在表中输入数据之前创建索引。

 语法

 
CREATE [UNIQUE] [NONCLUSTERED] INDEX index_name ON table_name (column_name [ASC|DESC][,…n])WITH (STATISTICS_NORECOMPUTE = { ON | OFF })]
 
CREATE [UNIQUE] [NONCLUSTERED] INDEX index_name ON table_name (column_name [ASC|DESC][,…n])WITH (STATISTICS_NORECOMPUTE = { ON | OFF })]

 参数

术语 定义

UNIQUE


在表上创建唯一索引。唯一索引是不允许其中任意两行具有相同索引值的索引。

SQL Server 2005 Compact Edition (SQL Server Compact Edition) 在创建索引后将检查是否存在重复的值(如果数据已存在),并在每次使用 INSERT 或 UPDATE 语句添加数据时执行该检查操作。必须先消除重复值,然后才可对列创建唯一索引。如果存在重复的键值,则将取消 CREATE INDEX 语句并返回错误。只能对定义为 NOT NULL 的列创建唯一索引。

如果存在唯一索引,则可能生成重复键值的 UPDATE 或 INSERT 语句将回滚,且 SQL Server Compact Edition 返回错误。即使 UPDATE 或 INSERT 语句更改许多行,但只要存在一个重复,上面这一点也将成立。


NONCLUSTERED


创建指定表的逻辑排序的索引。使用非聚集索引,数据行的物理顺序将独立于其索引顺序。这是唯一支持的索引类型。(默认值为 NONCLUSTERED)


index_name


指定索引的名称。索引名称在表中必须是唯一的,但是在数据库中不必是唯一的。


table_name


指定要对其创建索引的表的名称。

此表包含要建立索引的一个或多个列。


column name


要应用索引的列。指定两个或两个以上的列的名称,以对指定列中的组合值创建组合索引。在表后面的括号中,按排序优先级顺序列出要包含在组合索引中的列。

注意:
不能将包含 ntext 或 image 数据类型的列指定为要建立索引的列。


ASC | DESC ]


为特定的索引列确定升序 (ASC) 或降序 (DSC) 排序方向。默认值为 ASC。


n


指示可以为任何特定索引指定多列的占位符。索引中可以包含的最大列数为 16。


STATISTICS_NORECOMPUTE


指定是否重新计算分发统计信息。默认值为 OFF。

  • ON 
    不自动重新计算过期的统计信息。
  • OFF 
    启用自动统计信息更新

若要还原自动统计信息更新,请将 STATISTICS_NORECOMPUTE 设置为 OFF,或执行不带 NORECOMPUTE 子句的 UPDATE STATISTICS。

重要事项:
禁用分发统计信息的自动重新计算功能可能会阻止查询优化器为涉及此表的查询选取最佳执行计划。

示例

以下示例对 MyCustomers 表创建了唯一索引:

CREATE TABLE MyCustomers (CustID int, CompanyName nvarchar(50))CREATE UNIQUE INDEX idxCustId ON MyCustomers (CustId)
时间: 2024-10-20 04:03:20

sql service添加索引的相关文章

MySQL添加索引优化SQL

在慢查询日志中有一条慢SQL,执行时间约为3秒 mysql> SELECT     -> t.total_meeting_num,     -> r.voip_user_num     -> FROM     -> (     -> SELECT     -> count(*) total_meeting_num     -> FROM     -> Conference     -> WHERE     -> isStart = 1   

Sql Service笔记

笔记是在听郝斌老师的Sql Service教程所做 概念 Sql Service中单引号' '表示字符串,双引号" "表示名称(字段的别名) 约束 外键约束:通过外键约束从语法上保证了本事物所关联的其他事物是一定存在的,事物和事物之间的关系是通过外键来体现的 check约束:保证食物属性的取值是在合法的范围之间的 default约束:保证事物的属性值一定会有一个默认值 保证事物属性的取值不允许重复,但允许其中有一列且有且仅有一列为空 unique键是否允许多列为空? 答案:SqlSer

mysql 添加索引 mysql 如何创建索引

1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 4.添加FULLTEX

SQL Server - 聚集索引 <第六篇>

聚集索引的叶子页存储的就是表的数据.因此,表行物理上按照聚集索引列排序,因为表数据只能有一种物理顺序,所以一个表只能有一个聚集索引. 当我们创建主键约束时,如果不存在聚集索引并且该索引没有被明确指定为非聚集索引,SQL Server会自动将其创建为唯一的聚集索引,这并不是说主键列就一定是聚集索引,这只是默认行为而已. 示例,建表时通过指定主键为非聚集索引使主键列不为聚集列: CREATE TABLE MyTableKeyExample { Column1 int IDENTITY PRIMARY

SQL语句-创建索引

  语法:CREATE [索引类型] INDEX 索引名称ON 表名(列名)WITH FILLFACTOR = 填充因子值0~100GO USE 库名GOIF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引DROP INDEX TEST.IX_TEST_TNAME--如果存在则删除 --创建索引CREATE NONCLUSTERED INDEX IX_TEST_TNAME

SQL Server 创建索引的 4 种方法

前期准备: create table Employee (            ID int not null primary key,            Name nvarchar(4),            Credit_Card_ID varbinary(max)); --- 小心这种数据类型.            go 说明:本表上的索引,都会在创建下一个索引前删除. -------------------------------------------------------

用SQL语句添加删除修改字段

1.增加字段     alter table docdsp     add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMNcolumn_NAME3.修改字段类型     ALTER TABLE table_name     ALTER COLUMNcolumn_name new_data_type4.sp_rename 改名     EXEC sp_rename '[dbo].[Table_1].[filedName1]

mysql 为表添加索引

索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有3个未索引的表t1.t2.t3,分别只包含列c1.c2.c3,每个表分别含有1000行数据组成,指为1-1000的数值,查找对应值相等行的查询如下所示. SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3此查询结果应该为1000行,每行包含3个相等的值

mysql 添加索引

1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 4.添加FULLTEX