SQL Server数据库查询处理器特性分析
2007-05-19 09:44:40 来源:WEB开发网在上面这个查询语句中,表示从表customer中检索出全部的内容,并且根据列custid进行排序。一般情况下,该查询语句可能会产生下面的执行规划步骤:
第一步,扫描表customer主键的聚簇索引;
第二步,根据列custid,对在第一步中得到的查询结果进行排序;
第三步,把在第二步中得到的结果返回给应用程序。
查询处理器使用存储在数据库表中的有关统计信息来确定选用的产生最终结果的最有效的方法,这种方法该查询语句的执行规划。
如何访问数据库中的数据
为了能更好地理解查询语句的执行规划,看一看查询语句是如何访问数据库中的数据的。一般地,系统访问数据库中的数据,可以使用两种方法。第一种方法是表扫描,就是指系统将指针放置在该表的表头数据所在的数据页上,然后按照数据页的排列顺序,一页一页地从前向后扫描该表数据所占有的全部数据页,直至扫描完表中的全部记录。在扫描时,如果找到符合查询条件的记录,那么就将这条记录挑选出来。最后,将全部挑选出来符合查询语句条件的记录显示出来。第二种方法是使用索引查找。索引是一种树状结构,其中存储了关键字和指向包含关键字所在记录的数据页的指针。当使用索引查找时,系统沿着索引的树状结构,根据索引中关键字和指针,找到符合查询条件的的记录。最后,将全部查找到的符合查询语句条件的记录显示出来。
在SQL Server中,当访问数据库中的数据时,由SQL Server确定该表中是否有索引存在。如果没有索引,那么SQL Server使用表扫描的方法访问数据库中的数据。那么,查询处理器根据分布的统计信息生成该查询语句的优化执行规划,以提高访问数据的效率为目标,确定是使用表扫描还是使用索引。
统计信息
系统为每一个索引创建一个分布页,统计信息就是指存储在分布页上的某一个表中的一个或者多个索引的关键值的分布信息。当执行查询语句时,为了提高查询速度和性能,系统可以使用这些分布信息来确定使用表的哪一个索引。查询处理器就是依赖于这些分布的统计信息,来生成查询语句的执行规划。执行规划的优化程度依赖于这些分布统计信息的准确步骤的高低程度。如果这些分布的统计信息与索引的物理信息非常一致,那么查询处理器可以生成优化程度很高的执行规划。相反,如果这些统计信息与索引的实际存储的信息相差比较大,那么查询处理器生成的执行规划的优化程度则比较低。
一般地,分布的统计信息与索引的实际存储的信息是比较一致的。但是,当对某一个表有大量的数据操作时,特别是在被索引的列上有大量的数据被增加、修改或者删除,那么索引的实际存储信息就发生了比较大的变化。这时,索引中关键字的分布统计信息就与实际情况有大的差别。因此,为了提高关键字的分布统计信息的准确程度,当表中的数据有比较大的操作变化时,应该针对表中的全部索引或者一个索引执行UPDATE STATISTICS语句,这样系统重新计算关键字的分布统计信息,提高执行规划的优化程度和访问数据的效率。
- ››sql server自动生成批量执行SQL脚本的批处理
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
- ››Sql server 2005拒绝了对对象 'xx表' (数...
- ››Sql server 2005拒绝了对对象 'xx表' (数...
更多精彩
赞助商链接