⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 microsoft sql 2000

📁 介绍了数据库方面的基础知识
💻
字号:
作者:东北
日期:2001-6-4 23:15:14
Microsoft SQL 2000功能介绍-索引优化向导

对于一般的程序开发人员来说,如何写出好的程序是大家所努力的目标。好的程序不仅要具备友善的界面,程序代码也必须尽量间接以及可以重复使用。
但对于数据库应用程序的开发,其性能表现才是大家最重视的。好的数据库应用程序必须可以用最短的时间存取数据!而影响性能表现的关键因素之一就是在于表格上是否建立的适当的索引(Index)。
在SQL  SERVER上建立表格时,只要是主键(Primary key)或是唯一键(Unique)的字段上,默认的情况下SQL  SERVER会自动在该字段上建立索引。如果是其他的字段就要靠数据库管理者或者是程序开发者自行评估是否建立索引了。
通常符合一下条件的字段我们才会考虑建立索引:
经常用来作为搜索条件的字段
字段值重复的机率不高
字段长度较短
当然了,以上几点只能作为我们在建立索引时的参考。
如果您要统计的数据必须经由多个表的连接(Join)才能将数据查询出来的话,索引的建立与规则对您来说可能会变得较为复杂!举例来说,在一般的数据仓库以及决策支持系统中,经常需要从多个表格中同时JOIN查询数据。这时候每个表格内的主键上的索引并不足以作为搜索数据的依据,也许我们还要在特定字段上建立额外索引才能有效的提高数据查询时的效率。
问题来了!假设查询时将使用三个表格,搜索条件又指定了数个字段,我怎么知道应该在哪些字段上建立索引,建立索引时的种类应该选择聚集索引(Clustered)还是非聚集索引(Non-Clustered)呢?
相信大家可能都面临这样的问题吧!其实在SQL  SERVER7.0里就提供了一个相当好用的工具:索引优化向导(Index tuning wizard)。索引优化向导可以协助数据库管理员与程序开发人员在重要的表格上建立适当的索引,用以提高数据存取时的性能。使用索引优化向导的步骤简述如下:
1.	先使用另外一个工具SQL SERVER Profiller来追踪某个特定表格曾经进行过的数据处理动作,追踪后的结果我们称他为工作负荷(Workload)。
2.	将这一份工作负荷提供给索引优化向导。
3.	索引优化向导会针对工作负荷进行分析,分析之后就会建议您在最优化的情况下应该如何配置适当的索引。
虽然索引优化向导功能十分强大,但是很少有人使用过索引优化向导进行索引的调整。我想主要的原因应该是在使用索引优化向导时,其步骤过于繁琐,导致较不受大家的青睐,这实在是一件相当可惜的事!
在SQL SERVER2000里,索引优化向导与Query Analyzer紧密地结合在一起,您将可以直接在Query Analyzer中启动Query Analyzer进行索引分析动作,并针对特定的T-SQL命令进行查询的最优化调整。
接下来我们将为大家介绍如何使用SQL SERVER2000内的索引优化向导。

使用索引优化向导
范例说明:
1.	ITW数据库中有三个表格要在一起JOIN查询数据,分别是products、orders、[order details]。而查询命令如下:
2.	SELECT o.customerid,p.productname,od.quantity FROM orders o INNER JOIN [order details] od ON o.orderid=od.Orderid INNER JOIN products p ON od.productid=p. productid ORDER BY o.customerid
而目前的数据库内表格上索引设置情况为:
orders 表格上有一个聚集索引建立在orderid字段上。
Products 表格上有一个聚集索引建立在productid上。
[order details]并没有建立任何索引!
您可以利用Enterprise Manager内的[管理索引]来查询每个表格上已建立的索引。

步骤一:显示SELECT命令的执行计划
假设我们需要在ITW数据库执行以下命令查询每一个顾客所订购的产品名称、以及订货数量,需要从products、orders以及[order details]三个表格进行查询。命令如下:
SELECT o.customerid,p.productname,od.quantity FROM orders o INNER JOIN [order details] od ON o.orderid=od.Orderid INNER JOIN products p ON od.productid=p. productid ORDER BY o.customerid
在执行索引优化向导动作之前,我们先来看一下SQL SERVER会如何执行这个命令!请将鼠标移至工具栏按下[显示预计的执行计划]按钮。在Query Analyzer下方就会显示图形化的执行计划。

在下方的执行计划窗口中,您可以将鼠标移至不同的图示察看每个步骤执行时SQL SERVER所耗费的系统资源。有最左边的SELECT图示可以得知执行该SELECT命令时,系统的资源花费为3.50(还没有进行索引优化向导之前)。

步骤二:启动索引优化向导
接下来请用鼠标将要进行最优化的SELECT命令选择起来,然后选择查询菜单下的索引优化向导,或者直接按下[Ctrl]+[I]就可以直接启动索引优化向导。

步骤三:指定优化选项
在开始优化动作之前,您必须指定是否保留现有的索引以及欲进行的优化模式。如果[保留所有现有的索引]的选项没有选中,则SQL SERVER在进行最优化时就会暂时忽略现有的索引。在优化分析之后如果您决定适用SQL SERVER的建议设定,原有的索引也将自动被删除。

	在这里我们先保留现有的所有索引。

步骤四:指定工作负荷
设定优化选项之后,您必须指定工作负荷的来源。在SQL SERVER 2000中可以直接指定将Query Analyzer内的某一段T-SQL命令作为工作负荷来源。
到这里请您选择第三个[SQL 查询分析器选择]选项。
注:这里若指定[SQL 查询分析器选择],SQL SERVER就会将步骤二所选中的SELECT命令作为工作负荷来源。

图七

步骤五:指定欲进行索引优化的表格
本步骤是最重要的!您必须指定哪些表格时需要进行索引分析的?建议您将欲分析的T-SQL命令所用到的表格全部选中。以范例的SELECT命令来说,就需要选择products、orders、[order details]三个表格。但请注意:本步骤所指定的表格越多,则进行索引分析的时间越长,不过分析的结果当然也就越精确。
指定所有要分析的表格之后,您就可以按[下一步],开始进行索引优化工作。

图八
图九

步骤六:索引建议事项
进行索引优化分析之后,将会出现[索引建议]窗口。
如果您想要在最优化的状态下执行步骤二所选中的SELECT命令,SQL SERVER建议您使用以下四个索引。根据SQL SERVER分析结果,使用这四个索引的最优化查询与原来的查询比较起来,性能将会提高86%!

步骤七:设定索引更新作业
	建立完SQL SERVER所建议的索引之后,如图十所示,您可以选择[套用变更]让SQL SERVER依照建议值立刻进行索引的根新动作。当然了,如果您不想立刻修改,也可以设定自动化的作业或是将索引更新的程序代码保存起来,以后再自行修改。我们就直接选取[套用变更]下的[立即执行建议事项]。按[下一步]之后SQL SERVER就会立刻进行必要的更新动作。

执行索引优化向导之后
执行索引优化向导之后您可以利用Enterprise Manager在察看以下三个表格上的索引配置情况。原本桑格表格上都已经建立两个索引,SQL SERVER分别又新增了两个索引为:
orders表格上面加入了一个非聚集索引(建立在OrderID,CustomerID字段上)
[order details]表格上加入了一个聚集索引(建立在ProductID字段上),然后您可以在按一下工具栏中[显示预计的执行计划]图标,由左边的SELECT图示可以得知:经过索引哟化向导之后,执行该SELECT命令所消耗的系统资源为1.34。


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -