SQL SERVER
文章平均质量分 79
liubinggege
这个作者很懒,什么都没留下…
展开
-
SQL Server索引进阶第一篇:索引介绍
索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其反,可以说“成也索引,败也索引”。言归正传,其实索引就是数据库中的对象,这一点和数据库中的其他对象一样(如表,视图等),索引的作用就是使得SQL Server在寻找或者修改数据的时候所转载 2013-04-19 21:30:59 · 721 阅读 · 0 评论 -
SQL Server索引进阶第十三篇:Insert,Update,Delete语句
INSERT 在第十一篇关于索引碎片的文章中,我们已经介绍了插入语句带来的影响,这里只是做一个总结性介绍,更详细的内容请翻回第十一篇。 无论是将数据插入堆表或是聚集索引表,表上的每一个索引都需要对应添加一个条目,当然过滤索引可能除外。插入时,SQL Server根据索引键从跟节点一路向下找到叶子节点,找到叶子节点之后,SQL Server首先查看页内空间是否足够,如果页内空转载 2013-04-19 21:52:13 · 1005 阅读 · 0 评论 -
SQL Server索引进阶第十四篇:索引统计
在第十篇文章中我们详述了为什么索引需要叶子节点和非叶子节点,我原文是”然而,SQL Server并不知道什么是按字母表排序”,换句话说,SQL Server并不知道“Meyer, Helen”这个条目大概在索引的中间位置。 但是SQL Server需要知道有关索引中数据分布的情况;正如我们所知,查询的选择性是决定是否使用特定索引的关键。SQL Server存储索引键中的部分值,这部分转载 2013-04-19 21:53:25 · 848 阅读 · 0 评论 -
SQL Server索引进阶第十五篇:索引的最佳实践
在本篇文章中,我们在学习了之前的知识之后,推荐14条指导方针。这14条指导方针可以帮助你更好的为数据库构建索引。 本篇文章的格式使用了由Addison Wesley出版社出版的中使用的格式。每一个最佳实践之前都使用了如下4个动词:要,考虑,避免、不要,分别代表如下意思: 要(Do):这个原则要坚决遵守 考虑(Consider):通常情况下都要遵循这个原则,但如果你转载 2013-04-19 21:54:20 · 485 阅读 · 0 评论 -
深入浅出分区表与分区索引之五:案例讲解(中)
我们接着上一篇文章继续讲述。连接分区表 连接对齐的表时,SQL Server 2005 提供了通过一个或多个步骤连接表的选项,通过此选项,可以先连接各个分区,然后将子集加起来。不管如何连接分区,SQL Server 都会评估是否可以实现某种程度的分区消除。 分区消除 在下面的查询中,数据是从上一个方案中创建的 Orders 和 OrderDetails 表中查询转载 2013-04-21 22:23:12 · 460 阅读 · 0 评论 -
深入浅出分区表与分区索引之六:案例讲解(下)-完结篇
滑动窗口方案 当下一个月的数据(在本例中是 2004 年 10 月)可用时,将按特定的操作顺序使用现有的文件组、移入和移出数据。而在本销售方案中,目前 FG1 中的数据是 2002 年 10 月的数据。现在 2004 年 10 月的数据是可用的,因此,根据可用空间和存档要求,您有两个选择。记住,要将分区从表中快速移入或移出,移动操作必须只更改元数据。特别是,必须在要移入或移出的转载 2013-04-21 22:26:21 · 536 阅读 · 0 评论 -
深入浅出分区表与分区索引之二:分区的发展历史
分区的概念对 SQL Server 来说并不陌生。实际上,此产品的每个版本中都可以实现不同形式的分区。但是,由于没有为了帮助用户创建和维护分区架构而专门设计一些功能,因此分区一直是一个很繁琐的过程,没有得到充分的利用。而且,用户和开发人员对此架构存在误解(由于其数据库设计比较复杂),低估了它的优点。但是,由于概念中固有的重要性能改善,SQL Server 7.0 开始通过分区视图实现各种分区方转载 2013-04-21 22:16:31 · 542 阅读 · 0 评论 -
深入浅出分区表与分区索引之四:创建分区表的步骤
创建分区表或索引的步骤概述现在,我们对分区表的价值有了一定的了解,后面详细介绍实现分区表的过程以及有助于完成此过程的功能。逻辑流程如下:确定是否应为对象分区 虽然分区可以带来众多的好处,但也增加了实现对象的管理费用和复杂性,这可能是得不偿失的。尤其是,你可能不需要为较小的表或目前满足性能和维护要求的表分区。前面提到的销售方案使用分区减轻了移动行和数据的负担,但在转载 2013-04-21 22:19:43 · 722 阅读 · 0 评论 -
深入浅出分区表与分区索引之四:案例讲解(上)
如果朋友们已经阅读了与分区有关的概念、优点和代码示例,则可能已对此过程有了一个很好的理解;但是,对于每个步骤,都可以使用特定的设置和选项,而且在某些情况下,还必须满足各种条件。本节将帮助大家将这些内容融会贯通起来进行理解。 范围分区:销售数据 销售数据的使用方式经常发生变化。当前月份的数据是事务数据,而上一个月份的数据主要用于进行分析。分析通常针对月份、季度和/或年度范围的数据进行转载 2013-04-21 22:22:04 · 595 阅读 · 0 评论 -
深入浅出分区表与分区索引之一:表分区介绍
前言很多的技术人员总是特别青睐“分区表”,每每谈及分区的时候,很多人都喜欢说这样的话语“表中的数据已经达到了千万级别,要搞分区…”。很多人以为:分区就一定可以提升性能;很多人以为:表中的记录上千万就必须得分区;很多人认为:分区是很好,是个神器,可以搞定很多的问题。于是很多技术人员就开始搞分区,花了很大的精力和很多的时间做分区。他们没有对分区对数据库的影响和维转载 2013-04-21 22:13:03 · 673 阅读 · 0 评论 -
SQL Server索引进阶第十一篇:索引碎片分析与解决(中)-碎片发生原理深度剖析
在上一篇文章中,我们讲述了如何查看内部和外部的索引碎片,那么在本篇的文章中,我们将会从内部的底层来分析这些索引碎片是如何产生的,同时也给出处理碎片相对应的解决方案和一些最佳实践。在这里要说明一下,因为原英文版本在理解上面可能会有些困难,为了使得大家更好的理解原文,我们这里特意的加入了一些其他的内容,帮助朋友们进行一个过渡。因为索引碎片分析涉及到了页拆分的一些知识,页拆分发生在某个页转载 2013-04-19 21:49:54 · 760 阅读 · 0 评论 -
SQL Server索引进阶第四篇:页和区
在上一篇文章中,我们比较了完全相同的查询语句分别在存在聚集索引和非聚集索引的环境下耗费的成本.我们以“逻辑读”作为衡量成本的主要标准。现在就让我们来解释逻辑读作为主要衡量标准的原因以及SQL Server在读取时究竟读取什么。 当你提交一个向SQL Server的请求查询时,SQL Server知道扫描整表一定可以满足这个需求。但如果使用索引进行数据查找的成本要低于整表扫描时,SQL转载 2013-04-19 21:35:52 · 443 阅读 · 0 评论 -
SQL Server索引进阶第十一篇:索引碎片分析与解决(上)
相关有关索引碎片的问题,大家应该是听过不少,也许也很多的朋友已经做了与之相关的工作。那我们今天就来看看这个问题。为了更好的说明这个问题,我们首先来普及一些背景知识。知识普及我们都知道,数据库中的每一个表要么是堆表,要么就是包含聚集索引的表,或者我们称之为有序表。如果表是一个堆表,那么在使用非聚集索引查询数据的时候,会使用书签查找去底层的数据表中去检索需要的数据,这个转载 2013-04-19 21:49:06 · 604 阅读 · 0 评论 -
SQL Server索引进阶第五篇:索引包含列
包含列解析所谓的包含列就是包含在非聚集索引中,并且不是索引列中的列。或者说的更通俗一点就是:把一些底层数据表的数据列包含在非聚集索引的索引页中,而这些数据列又不是索引列,那么这些列就是包含列。同时,这些包含列并不会对索引中的条目有影响。好吧,为了使得问题稍微清楚一点,我用个简单的图示说明一下:我们可以用下面的语句在创建索引的时候加入包含列,代码如转载 2013-04-19 21:37:00 · 561 阅读 · 0 评论 -
SQL Server索引进阶第六篇:书签
书签是什么 我们已经在前面提到过书签,但仅仅说了书签可以帮助SQL Server快速从非聚集索引条目导向到对应的行,本篇文章开始让我们对书签的探索更进一步.书签的内容实际上是取决于非聚集索引所在表是以堆还是聚集索引存放的。 不论表是堆结构还是段结构,可以确定的是,表中每一行都是某一页的第N行,这个某一页又是某个数转载 2013-04-19 21:38:35 · 440 阅读 · 0 评论 -
SQL Server索引进阶第九篇:解读执行计划
其实说到执行计划,相信已经不是什么神秘的东西了,可以说已经逐渐的成为了理解优化的基础知识。在本系列之前的很多的文章中,提到也是用过执行计划。所谓的执行计划,说的通俗一点就是查询语句的执行算法。通过查看执行计划,可以让我们看到很多的优化引擎的内部的信息,本篇的文章不可能对执行计划进行很详尽而全面的讲解,但是,朋友们可以把这个作为学习执行计划的一个入口,在以前,我们团队会给出更多的主题的文章和视频。转载 2013-04-19 21:47:04 · 547 阅读 · 0 评论 -
SQL Server索引进阶第二篇:深入非聚集索引
本系列文章的第一篇介绍了SQL Server的索引,尤其重点介绍了非聚集索引,在我们的第一个例子中展示了使用非聚集索引从一个表中取得一行数据所带来的潜在好处。在本篇文章中,我们继续研究非聚集索引,本篇文章所研究的内容就要比使用非聚集索引在单表中查询一行所带来的性能提升更深一步了。本系列文章将要列举的一些例子中介绍的部分理论是关于是非聚集索引的理论,并通过探究索引的内部结构来帮助更好的理解这转载 2013-04-19 21:33:08 · 428 阅读 · 0 评论 -
SQL Server索引进阶第十篇:索引的内部结构
在前一系列文章中我们着重讲述了有关索引各种比较虚的概念,比如索引可以做什么,索引的逻辑结构,接下来是时候来讲述比较实在的东西了,也就是索引的物理结构。理解索引的内部结构对于整体的理解索引是至关重要的,只有理解了索引的内部结构以及SQL Server是如何维护索引的,你才能理解数据插入,删除,更新,索引的创建、修改、删除所带来的成本。 叶子层级和非叶子层级 所有的索转载 2013-04-19 21:47:54 · 499 阅读 · 0 评论 -
SQL Server索引进阶第十二篇:索引的创建,修改和删除
创建、修改和删除索引是属于索引维护部分中的内容,作为数据库对象,索引同样也用CREATE, ALTER和 DROP这三个DDL语句进行操作。但不同的是,对于索引来说这几个语句所能提供的功能要远远超过其名字所示,允许你创建、整理、删除甚至修改索引的metadata。 当你创建或是修改索引时,你可以设置一些参数,这些参数作为索引的一部分存储在系统表中,你可以通过sys.indexes转载 2013-04-19 21:50:59 · 934 阅读 · 0 评论 -
SQL Server索引进阶第三篇:聚集索引
在上一篇文章中,我们已经介绍了非聚集索引相关的内容。在本篇中,我们会介绍与聚集索引相关的话题。首先,我们综合之前的文章,再来思考一下数据库接收到请求之后(Select,Update,Delete,Insert),获取数据的几种方式:1.仅仅只访问非聚集索引而不访问底层的数据表来获取数据。这种情况只有当索引中包含了所有要请求的数据的时候才发生。2.通过在索引中转载 2013-04-19 21:34:41 · 565 阅读 · 0 评论 -
SQL Server索引进阶第七篇:过滤的索引
在之前的文章中,我们已经介绍了很多有关索引的知识,不管是对聚集索引还是非聚集索引,有一点我们可以知道就是:在底层数据表中的每一行,在索引页中都有一个条目与之前对应,换句话说,就是,如果底层的数据有,假设10w条,那么在索引结构中必然会包含10w个引用指向这些数据行。在SQL Server 2008以后的版本中,引入了一个特殊的“过滤的索引”改变了 这种情况,而且也相应的带来转载 2013-04-19 21:39:40 · 531 阅读 · 0 评论 -
SQL Server索引进阶第八篇:唯一索引
唯一索引和约束唯一索引和其它索引本质上并没有什么不同,唯一不同的是唯一索引不允许索引键中存在相同的值。因为索引中每一个条目都与表中的行对应。唯一索引不允许重复值被插入索引也就保证了对应的行不允许被插入索引所在的表,这也是为什么唯一索引能够实现主键和候选键。为表声明主键或唯一约束时,SQL Server会自动创建与之对应的唯一索引。你可以在没有唯一约束的情况下创建唯一索引,但转载 2013-04-19 21:45:53 · 837 阅读 · 0 评论 -
深入浅出分区表与分区索引之三:分区重要概念和术语
要在 SQL Server 2005 中实现分区,必须了解一些新的概念、术语和语法。要理解这些新概念,首先我们看一下与创建和放置操作有关的表结构。在以前的版本中,表通常是一个物理和逻辑概念,但使用 SQL Server 2005 分区表和索引,您在存储表的方式和位置方面就有了多种选择。在 SQL Server 2005 中,可以使用以前版本中的相同语法创建表和索引,作为一个表结构放置到 D转载 2013-04-21 22:17:50 · 579 阅读 · 0 评论