SQL SERVER 索引与视图学习

索引的优点。创建唯一性索引可以确保行数据的唯一性;可以大大提高数据的检索速度;可以加速表与表之间的连接;在使用order by,group by之句时,可以减少查询中分组和排序的时间。

索引的缺点。创建和维护索引需要耗费时间;索引占用物理空间;当对表中的数据进行,删除,更改时,索引也要动态的维护。

创建索引:

 1 CREATE [UNIQUE] [CLUSTERED | NONCLUSTERED]
 2 INDEX <index name> ON <table or view name>(<column name> [ASC|DESC][,...n])
 3 INCLUDE (<column name> [,...n])
 4 [
 5     WITH
 6     [PAD_INDEX = {ON | OFF}]
 7     [[,] FILLFACTOR = <fillfactor>]
 8     [[,] IGNORE_DUR_KEY = {ON | OFF}]
 9     [[,] DROP_EXISTING = {ON | OFF}]
10     [[,] STATISTICS_NORECOMPUTE = {ON | OFF}]
11     [[,] SORT_IN_TEMPDB = {ON | OFF}]
12     [[,] ONLINE = {ON | OFF}]
13     [[,] ALLOW_ROW_LOCKS = {ON | OFF}]
14     [[,] ALLOW_PAGE_LOCKS = {ON | OFF}]
15     [[,] MAXDOP = <maxinum degree of parallelism>
16 ]
17 [ON {<filegroup> | <partition scheme name> | DEFAULT}]

eg.

USE test1

GO

IF EXISTS(SELECT * FROM SYSINDEXES WHERE NAME=‘ceshi_index‘)

DROP INDEX ceshi_index

Create unique nonclustered index ceshi_index

ON orders(customerID)

With FILLFACTOR = 30

GO

修改索引

1 Alter index ceshi_index on ceshi Rebuild
2 With (FILLFACTOR=30,IGNORE_DUP_KEY=ON)
时间: 2024-12-25 23:40:15

SQL SERVER 索引与视图学习的相关文章

SQL Server 索引和视图

索引 1. 什么是索引 索引就是数据表中数据和相应的存储位置的列表,利用索引可以提高在表或视图中的查找数据的速度. 2. 索引分类 数据库中索引主要分为两类:聚集索引和非聚集索引.SQL Server 2005还提供了唯一索引.索引视图.全文索引.xml索引等等.聚集索引和非聚集索引是数据库引擎中索引的基本类型,是理解其他类型索引的基础. # 聚集索引 聚集索引是值表中数据行的物理存储顺序和索引的存储顺序完全相同.聚集索引根据索引顺序物理地重新排列了用户插入到表中的数据,因此,每个表只能创建一个

SQL Server索引 - 索引(物化)视图 &lt;第九篇&gt;

一.索引视图基本概念 索引视图实际上是一种将一组唯一值“物化”为群集索引形式的视图,所为物化就是几乎和表一样,其数据也是会存储一份的(会占用硬盘空间,但是查询速度快,例如可以将count(),sum()等值设在索引视图中).其优点是它在提取视图背后的信息方面提供了一个非常快的查找方法.在第一个索引(必须是针对一组唯一值的聚集索引)之后,通过使用来自第一个索引的聚集键作为参考点,SQL Server还能在视图上建立额外的索引.其限制如下: 视图必须使用SCHEMABINDING选项: 如果视图引用

sql server 索引总结三

一.非聚集索引维护 非聚集索引的行定位器值保持相同的聚集索引值,即使该聚集索引列物理上重新定位后,也是如此. 为了优化这个维护开销,SQL Server添加一个指向旧数据页的指针,以在页面分割之后指向新的数据页面,而不是更新所有相关非聚集索引的行定位器.这样,虽然降低了非聚集索引的维护开销,但是增加了从非聚集索引行到数据行的导航开销,因为添加了一个旧数据页面和信数据页面之间的连接.因此,将聚集索引作为行定位器降低了非聚集索引相关的开销. 二.定义书签查找 当一个查询请求不是优化器选择的非聚集索引

[转帖]SQL Server 索引中include的魅力(具有包含性列的索引)

SQL Server 索引中include的魅力(具有包含性列的索引) http://www.cnblogs.com/gaizai/archive/2010/01/11/1644358.html 上个月刚发现sql2016 之前仅支持 索引包含 16个键 (之后支持32个键) 这个月发现 可以 使用include 的方式来处理. 开文之前首先要讲讲几个概念 [覆盖查询] 当索引包含查询引用的所有列时,它通常称为“覆盖查询”. [索引覆盖] 如果返回的数据列就包含于索引的键值中,或者包含于索引的键

SQL Server 索引维护:系统常见的索引问题

在很多系统中,比如本人目前管理的数据库,索引经常被滥用,甚至使用DTA(数据库引擎优化顾问)来成批创建索引(DTA目前个人认为它的真正用处应该是在发现缺失的统计信息,在以前的项目中,用过一次DTA,里面提示了很多列缺少统计信息,后来在不改动其他操作的前提下,把这些统计信息手动建上去,性能提升非常明显.关于统计信息将另开文章介绍).一个表甚至有20多个索引(索引的数量并没有标准,但是要尽量合理,每个索引都应该能支撑大量查询或者增删改中的查询功能才有存在价值).索引过多带来了服务器的沉重压力,有这么

SQL Server索引的维护 - 索引碎片、填充因子 &lt;第三篇&gt;

实际上,索引的维护主要包括以下两个方面: 页拆分 碎片 这两个问题都和页密度有关,虽然两者的表现形式在本质上有所区别,但是故障排除工具是一样的,因为处理是相同的. 对于非常小的表(比64KB小得多),一个区中的页面可能属于多余一个的索引或表---这被称为混合区.如果数据库中有太多的小表,混合区帮助SQL Server节约磁盘空间. 随着表(或索引)增长并且请求超过8个页面,SQL Server创建专用于该表(或索引)的区并且从该区中分配页面.这样一个区被称为统一区,它可以为多达8个相同表或索引的

SQL Server索引设计 &lt;第五篇&gt;

SQL Server索引的设计主要考虑因素如下: 检查WHERE条件和连接条件列: 使用窄索引: 检查列的选择性: 检查列的数据类型: 考虑列顺序: 考虑索引类型(聚集索引OR非聚集索引): 一.检查WHERE条件列和链接条件列 当一个查询提交到SQL Server时,查询优化器尝试为查询中引用的所有表查找最佳的数据访问机制.下面列出查询优化器针对WHERE和连接的工作方式: 优化器识别WHERE子句和连接条件中包含的列. 接着优化器检查这些列上的索引. 优化器通过从索引上维护的统计确定子句的选

SQL Server 索引和表体系结构(三)

原文:SQL Server 索引和表体系结构(三) 包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点:包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引. 正文 创建包含

SQL Server -- 自定义函数(学习总结,备忘)

SQL Server自定义函数,以前只在书上看过,没有动手去敲一敲,今天刚好接触到,看了几篇博文学习了下.做好备忘很重要!! (@[email protected])Y Learn from:http://www.cnblogs.com/lideng/archive/2013/04/15/3022418.html 自定义函数分为:标量值函数或表值函数两种. 标量值函数:如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数. 表值函数:如果 RETURNS 子句指定 TABLE,则函