【译】索引进阶(十二):SQL SERVER中的索引碎片【下篇】

为了讨论碎片产生的原因,以及避免和移除索引碎片的技术,我们必须从本进阶系列后续将介绍的两个章节借用一些知识点:创建/更新索引的知识,以及向一个索引表插入数据行的相关知识。

当我们讲解这些信息的时候,记住本节背景部分提到的内容,仅当你的应用是进行索引扫描时,碎片是不被期望的(不管是索引的完全扫描还是部分扫描)。当你的应用程序仅仅返回一个索引键值的少量数目的条目时,碎片其实并不是个问题。如同列表3所示的5行数据的查询。

SELECT *
FROM Sales.SalesOrderDetail
WHERE SalesOrderID = 56080;
GO

列表3:一个高选择性的查询

当你在一个已经填充了数据行的表上创建或者重建索引的时候,会发生磁盘空间的重分配,导致了一几乎不包含外部碎片的索引。内部碎片的数值取决于你为 FILLFACTOR选项指定的值,它决定了页的覆盖率。在后续的数据更新中,SQL SERVER不会做任何努力来包含这种页覆盖率,随着数据行被插入表,结果条目会被插入索引页中,这些页会变得更加饱和。

原文地址:https://www.cnblogs.com/qianxingmu/p/10642225.html

时间: 2024-09-30 07:51:21

【译】索引进阶(十二):SQL SERVER中的索引碎片【下篇】的相关文章

转载: SQL Server中的索引

http://www.blogjava.net/wangdetian168/archive/2011/03/07/347192.html 1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行. 表或视图可以包含以下类型的索引: 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行.索引定义中包含聚集索

SQL Server中的索引

1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行. 表或视图可以包含以下类型的索引: 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行.索引定义中包含聚集索引列.每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序. 只有当表包含聚集索引时,表中的数据行才按排序顺序存储.如果表具有聚集索

MSSQL之二 Sql Server中管理库与表

作为数据库开发人员,你负责创建和管理数据库和表.当创建表的时候,维护数据的完整性对你是很重要的.为确保表中的数据是准确的,一致的和可靠的,SQL Server提供了各种你可以应用到表上以增强数据完整性的检查. SQL Server包含各种系统数据库.本章介绍不同类型的系统数据库并且解释如何管理用户定义的数据库和管理用户自定义表. 重点 ?      管理数据库 ?      管理表 ?      SQL Server 2008中的数据类型 预习功课 ?        创建数据库 ?       

SQL Server中的索引结构与疑惑

说实话我从没有在实际项目中使用过索引,仅知道索引是一个相当重要的技术点,因此我也看了不少文章知道了索引的区别.分类.优缺点以及如何使用索引.但关于索引它最本质的是什么笔者一直没明白,本文是笔者带着这些问题研究msdn的一点小结以及一大堆疑惑. 1.表结构 当开发者在数据库中创建一个表时,此时默认为这个表创建了一个分区,注意是一个分区.分区是一种数据组织单元,在这个分区中可存在2种结构,分别是堆结构或B树结构(索引结构),也就是说一个分区里要么是堆结构要么是B树结构.为了在某些方面提高性能以及便于

T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他

简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索引的概念,需要了解大量原理性的知识,包括B树,堆,数据库页,区,填充因子,碎片,文件组等等一系列相关知识,这些知识写一本小书也不为过.所以本文并不会深入讨论这些主题. 索引是什么 索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息. 精简来说,索引是一种结构.

SQL Server中如何识别、查找未使用的索引(unused indexes)

在SQL Server中,索引是优化SQL性能的一大法宝.但是由于各种原因,索引会被当做"银弹"滥用,一方面有些开发人员(甚至是部分数据库管理员)有一些陋习,不管三七二十一,总是根据所谓的"感觉"或"经验"先增加一些索引,而不管这些索引是否未被使用或是否合理.另外一方面在数据库的生命周期中,需求总是在变化,业务也在变化,有些当初创建的有效索引可能已经变成了unused index了.变成了数据库性能的累赘: 另外,部分数据库管理员其实很少清理索引

细说Sql Server中的视图(上)转载

原文:细说Sql Server中的视图(上)http://www.cnblogs.com/xbf321/archive/2009/06/16/view_in_sqlserver.html 1,什么是视图? 2,为什么要用视图: 3,视图中的ORDER BY; 4,刷新视图: 5,更新视图: 6,视图选项: 7,索引视图: 细说Sql Server中的视图(下)   应大家要求已在“细说Sql Server中的视图(上)”中添加“为什么要用视图”一小节. 1.什么是视图 视图是由一个查询所定义的虚

Sql Server系列:索引基础

1. 索引概念 索引用于快速查找在某个列中某个特定值的行,不使用索引,数据库必须从第1条记录开始读完整个表,知道找出需要的行.表越大,查询数据所花费的时间越多.如果表中查询的列有索引,数据库能快速到达一个位置去查找数据,而不必遍历所有数据. 索引是一个单独的.存储在磁盘上的数据库结构,包含对数据表里所有记录的引用指针.使用索引用于快速找出一个或多个列中有特定值的行,对相关列使用索引是降低查询操作时间的最佳途径.索引包含由表或试图中的一列或多列生成的键. 索引的优点: ◊ 通过创建唯一索引,可以保

《SQL Server企业级平台管理实践》读书笔记——SQL Server中数据文件空间使用与管理

1.表和索引存储结构 在SQL Server2005以前,一个表格是以一个B树或者一个堆(heap)存放的.每个B树或者堆,在sysindexes里面都有一条记录相对应.SQL Server2005以后,引入了分区表的概念(Table Partition),在存储组织上,现有的分区基本上替代了原来表格的概念,原先表的概念成为了一个逻辑概念.一个分区就是一个B树或者一个堆.而一张表格则是一个到多个分区的组合. 1.1用B树存储于聚集索引的表数据页 如果一个表格上有聚集索引(Clustered In