以下的文章主要描述的是如何正确利用索引来对SQL Server视图运行的实际性能进行提高,我们大家都知道出现SQL Server数据库的视图中包含Group By语句的情况,在更好不要采用索引SQL Server视图。
虽然Group By语句需要对数据进行聚合操作。但是他是高基数度的数据聚合。高基数度表示健包含许多不同的值。如需要采用Group By语句对数以万计的用户数据进行分组,则这个分组对象的数值会很大。这个用户的数量就是基数度。
唯一键具有可能的更高基数度,因为每个键具有不同的值。索引视图通过减少查询必须访问的行数来提高性能。假如SQL Server视图结果集中的行数像基表中的行数那么多,那么使用视图获得的性能收益微乎其微。
索引视图的几个典型应用
笔者在这里根据自己的数据库设计经验,谈谈索引视图的两个主要应用。希望这两个例子能够给大家带来一定的启发。
如某个商品零售企业,其在不同的地方有多个零售门店。为了便于管理,不同的零售门店都采用独立的数据库表来记录他们的销售情况。到月底的时候,需要对各个,门店的销售记录进行汇总,最终要统计在一张表中。
此时,该如何处理呢 通常情况下,是先对各个门店的销售情况进行汇总,统计出每个类别的销售金额。然后再把各个表的内容进行连接,放在同一张报表中。假如从数据库设计的角度讲,那么就是先对每张销售情况表进行聚合操作,然后再利用Union语句把它们连接起来。Union语句就是将两个SQL语句的结果合并起来。如要实现以上目的,我们可以通过SQL1 语句 Uinon SQL语句2这种方式实现目的。
但是,假如这些数据用于决策分析系统,每次用到的时候都需要重新查询,就会大大的增加数据库的查询负担。为此,就要建立索引视图。不过可惜的是,索引视图不支持Uinon操作符。那该如何处理呢 通常情况下,笔者都是这么做的。
之一步先对每个门店的销售表进行汇总统计,此时可以利用索引视图来提高查询的速度。第二步再用SQL语句来查询这几个索引视图中的数据并利用Uinon语句进行连接。也就是说,不直接从数据库基表中查询数据进行连接,而是从索引SQL Server视图中进行连接。这虽然不能够提高Uinon操作的速度,但是因为每个表的聚合操作时间缩短了,那么其Uinon连接的时间相对来说,也就缩短了。
再如,现在各个门市店的销售情况都是在独立的SQL数据库中记录。然后在季末或者年末需要它们他们的数据连接起来。此时,又该如何处理呢 基本上跟上面的操作步骤类似。之一步统计每个数据库中的销售情况,对某些数据进行汇总操作。
第二步就利用Union等操作符把它们的结果连接起来。但是由于索引视图不能够同时引用多个数据库中的表,所以不能够设计单个索引视图来完成这项任务。笔者的做法是,先在每个数据库中建立一张索引视图,来统计这些销售情况,即对每个数据库单独的执行聚合操作。
然后再通过连接操作把它们的结果连接起来。这个跟上面的一样,索引视图并不能够直接提高连接操作的性能。他也是通过缩短各个数据库系统聚合操作的时间来实现缩短整个连接操作时间的目的。所以,其连接操作的总体速度会加快。
如何创建索引视图
其实,SQL Server视图的创建非常简单。只需要在创建视图的时候,加入一个WITH SCHEMABINDING的关键字即可。所以,要创建索引视图不难。其更大的难度还在于数据库工程师需要根据实际的情况,来判断是否需要采用索引视图。即需要应用场景,来分析此时采用索引视图能够改善视图的性能。
在某些电脑中,机器内部蜂鸣器与系统的声音输出方案是相关联的,这样一来会导致当系统输出声音时,即使电脑没有连接外部音响或耳机,也会通过内置蜂鸣器发出“嘟嘟哔哔”的声音。这个问题主要出现在Windows 7电脑中,假如你的电脑恰好遇到了这样的问题,可参考下面的方法来解决: 1、在桌面“计算机”图标上右...
Windows 7 64位系统开机后提示"press any key to restart",无法进入系统了,具体现象如下所示: 故障分析: 故障的主要原因还是硬盘的问题,可以先检查是不是接触不良或坏了,进行修复或更换即可。 解决方法: 1、开机按F8不动到高级选项出现在松手,选“...
Intel会在2015年推出Broadwell、Skylake两代14nm处理器,前者可以使用9系芯片组,Skylake升级到了LGA1151插槽,需要搭配新的100系列芯片组,但初期的Skylake-S又不能超倍频,所以今年Q2季度开始会很混杂。Skylake一代会支持DDR4,100系列芯片组升...
假如碰到电脑里的文件夹和文件全都不显示名字了(如下图),是不是电脑中毒了呢 请教下笔者有没好的解决方法!下面是笔者给出的答案,希望能够帮助到大家! 首先打开你用来装图片的文件夹(缩略图下面的文字不显示的文件夹),然后但击工具栏上的“查看”选择“平铺”, 下面就是关键:要按住SHIFT键不...
用Windows 7久了,C盘越来越大,原来50G的空间基本用完了,又不想重装系统,就想着能不能直接扩容。 在网上搜了半天,看了无数教程,都写得不明不白的,结合了几篇教程才终于搞明白。 重新总结一下,方便有需要的人。 所用软件: http://www.jb51.net/softs/57895...
经常听见有人说用Windows 7玩网络游戏的时候网络延时比较高,也就是ping比平时xp的时候高一点,一直找不到原因,很苦恼。今天我们终于找到理由了,原来是Windows 7的一个服务在作怪,这个服务叫:Multimedia Class Scheduler,就是这个服务让我的PING如此高,问题是...