SQLServer 语句-创建索引
来源:互联网 发布:安卓同步软件 编辑:程序博客网 时间:2024/05/18 12:04
语法:
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 在小型表中用索引搜索数据所花的时间比逐行搜索更长。
http://msdn.microsoft.com/zh-cn/library/ms345331(SQL.90).aspx
新增: 2006 年 4 月 14 日
在指定的表上创建索引。可以在表中输入数据之前创建索引。
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
要应用索引的列。指定两个或两个以上的列的名称,以对指定列中的组合值创建组合索引。在表后面的括号中,按排序优先级顺序列出要包含在组合索引中的列。
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)
- SQLServer 语句-创建索引
- SQLServer 语句-创建索引
- SQLServer 语句-创建索引
- SQLServer数据库创建索引
- SQLSERVER创建索引
- sqlserver创建索引
- SqlServer 创建全文索引
- sqlserver 创建索引
- SQLServer创建索引
- sqlserver创建索引
- sqlserver 分支语句及索引
- SQLServer如何创建聚集索引
- SQL语句-创建索引
- SQL语句-创建索引
- SQL语句-创建索引
- SQL语句-创建索引
- mysql 创建索引语句
- DB2 创建索引语句
- Linux内核--各种宏定义
- SFTP上传文件详解
- git常用命令指导
- iOS 判断身份证号码
- LeetCode 140 Word Break II--In C++
- SQLServer 语句-创建索引
- Android 6.0 - 动态权限管理的解决方案
- 论文笔记 | SSD: Single Shot MultiBox Detector
- iOS 判断是否连接wifi
- android中Webview与javascript的交互(互相调用)
- iOS 判断是否是数字
- SFTP中创建文件目录,上传文件(*)
- Singleton : Implementation in Unity3d C#
- android-R.bool