DB2利用统计视图提高查询执行性能

DB2® 基于成本的优化器(以下简称优化器)可以评估每个访问计划的执行成本,并根据评估结果选择出最优的访问计划。在访问计划中,在每个操作符上进行评估所用的基数(或行数)是成本评估过程中的一个重要因素。基数评估的准确性取决于收集到的统计信息。用户通常将重点放在从单个表上收集统计信息,包括基本的单列统计、单个列上的分布统计信息,两个或多个列上的多列统计信息。这些统计信息通常可满足大多数需求,但无法捕获复杂的关系,比如跨连接关系。统计视图提供了捕获复杂关系所需的统计信息。

本文通过几个示例向您展示如何识别这些复杂的关系,以及如何使用统计视图捕获它们。其他信息还包括关于可收集的统计信息(包括统计视图)的文章和文档链接。本文假设您对统计视图有一定的了解。

模式布局

本文使用了一个零售产品供应商的业务模式,通过 TPC 决策支持基准测试程序向您介绍模式布局。

图 1. 模式

零售业务模型由四个主题领域(目录、Web、存储和库存)组成,除了库存之外,其他领域都由两个事实表组成。本文中讨论的大多数示例场景都基于 Web 主题领域,主要关注包含 WEB_SALES 事实表的星形模式。

图 2. WEB_SALES 星型模式

时间: 2024-09-20 09:41:52

DB2利用统计视图提高查询执行性能的相关文章

用 SQL Server 2000 索引视图提高性能

server|视图|索引|性能 什么是索引视图? 许多年来,Microsoft SQL Server 一直都提供创建虚拟表(称为视图)的功能.在过去,这些视图主要有两种用途: 提供安全机制,将用户限制在一个或多个基表中的数据的某个子集. 提供一种机制,允许开发人员定制用户如何才能以逻辑方式查看存储在基表中的数据. SQL Server 2000 已经扩展了 SQL Server 视图的功能,以提高系统性能.它可以在一个视图上创建唯一的群集索引和非群集索引,可以改进最复杂查询的数据访问性能.在 S

通过 SQL Server 2005 索引视图提高性能

本文介绍了 SQL Server 2005 Enterprise Edition 中经过改进的索引视图功能.文中对索引视图进行了说明介绍,并讨论了可通过该功能改善性能的一些具体情况 一.索引视图 多年以来,Microsoft SQL Server 一直支持创建称为视图的虚拟表.通常,这些视图的主要作用是: • 提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中. • 提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式. 通过 SQL Server 2000,S

用SQL Server 2005索引视图提高性能一

一.索引视图 多年以来,MicrosoftSQL Server一直支持创建称为视图的虚拟表.通常,这些视图的主要作用是: 提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中. 提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式. 通过 SQL Server 2000,SQL Server 视图的功能得到了扩展,实现了系统性能方面的收益.可在视图上创建唯一的聚集索引及非聚集索引,来提高最复杂的查询的数据访问性能.在 SQL Server 2000 和 2005

DB2数据库物化视图:MQT物化查询表的使用

使用 MQT物化查询表(Materialized Query Tables, MQT) MQT 的定义基于查询的结果.MQT 可以显著提高查询的性能.本教程将介绍 MQT.总结表(summary table)和 staging 表,并通过一些实用的例子展示如何创建和使用物化查询表. MQT 是基于查询的结果定义的一个表.MQT 中包含的数据来自 MQT 定义所基于的一个或多个表.总结表(也称自动总结表[AST])对于 IBM DB2 for Linux, UNIX, and Windows 的用

用智能优化限制提高Oracle数据库性能

Oracle SQL运行时间的最主要的组成部分是花在为执行准备新的SQL语句上的时间.不过,如果了解了可执行计划产生的内在机制,你就可以控制Oracle花费在评估表的连接顺序的时间,并在总体上提高查询的性能. 准备为执行提供的SQL语句 在一个SQL语句进入Oracle库的cache之后.而真正被执行之前,将会依次发生如下事件: 语法检查--检查该SQL语句的拼写和词序是否正确. 语义解析--Oracle根据数据词典(data dictionary)来验证所有的表格(table)和列(colum

EntityFramework之原始查询及性能优化(六)

前言 在EF中我们可以通过Linq来操作实体类,但是有些时候我们必须通过原始sql语句或者存储过程来进行查询数据库,所以我们可以通过EF Code First来实现,但是SQL语句和存储过程无法进行映射,于是我们只能手动通过上下文中的SqlQuery和ExecuteSqlCommand来完成. SqlQuery sql语句查询实体  通过DbSet中的SqlQuery方法来写原始sql语句返回实体实例,如果是通过Linq查询返回的那么返回的对象将被上下文(context)所跟踪. 首先给出要操作

浅析SQL Server的聚焦使用索引和查询执行计划_MsSql

前言 上一篇<浅析SQL Server 聚焦索引对非聚集索引的影响>我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解. 透过索引来看查询执行计划 我们首先来看看第一个例子 1.默认使用索引 USE TSQL2012 GO SELECT orderid FROM Sales.Orders SELECT * FROM Sales.Orders 上述我们看到第2个查询的所需要的开销是第1个查询开销的3倍

SQL Server-聚焦使用索引和查询执行计划(五)

前言 上一篇我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解,Always to review the basics. 透过索引来看查询执行计划 我们首先来看看第一个例子 1.默认使用索引 USE TSQL2012 GO SELECT orderid FROM Sales.Orders SELECT * FROM Sales.Orders 上述我们看到第2个查询的所需要的开销是第1个查询开销的3倍,

浅析SQL Server的聚焦使用索引和查询执行计划

前言 上一篇<浅析SQL Server 聚焦索引对非聚集索引的影响>我们讲了聚集索引对非聚集索引的影响,对数据库一直在强调的性能优化,所以这一节我们统筹讲讲利用索引来看看查询执行计划是怎样的,简短的内容,深入的理解. 透过索引来看查询执行计划 我们首先来看看第一个例子 1.默认使用索引 USE TSQL2012 GO SELECT orderid FROM Sales.Orders SELECT * FROM Sales.Orders 上述我们看到第2个查询的所需要的开销是第1个查询开销的3倍