约束条件对于查询优化的作用

简介:

约束条件对于查询优化至关重要。 许多人仅仅认识到约束是为了保证数据的完整性,当然这也是对的。 但约束同事也会被优化器利用以便决定最优执行计划。 优化器使用以下数据作为输入变量: 1. 查询语句 2. 所有可用的数据库对象统计值 3. 系统统计值,可能存在的如CPU速度,单块物理读的速度,以及一系列硬件指标 4. 数据库初始化参数 (parameters) 优化器使用所有这些信息以便决定最好的查询方式。我常常遇到人们在数据仓库或报表系统中避免使用约束。 "或许他们不需要约束以保持数据完整性,但他们确实需要约束以获取最优执行计划。数据仓库中糟糕的执行计划 可能执行数个小时乃至于数天。由于性能考量,数据仓库同样需要约束! 让我来看一些例子(使用11gr1,11.1.0.7)。第一个例子是分区排除,该特性自版本7.3时引入。 在代码演示1中,我们建立2个表包括互斥的数据以及一个合并(UNION ALL)它们的视图。 代码演示1: 建立表以及互斥数据以及试图 SQL> create table t1 2


本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1276803

相关文章
|
8月前
|
SQL 索引 OceanBase
OBCP第四章 SQL调优-局部索引与全局索引
OBCP第四章 SQL调优-局部索引与全局索引
81 0
|
SQL 索引 数据库
使用instr 函数优化替换Like条件子句提高数据检索性能案例总结
使用instr 函数优化替换Like条件子句提高数据检索性能
1016 0
使用instr 函数优化替换Like条件子句提高数据检索性能案例总结
|
1月前
|
存储 关系型数据库 MySQL
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
MySQL数据库性能大揭秘:表设计优化的高效策略(优化数据类型、增加冗余字段、拆分表以及使用非空约束)
|
4月前
|
SQL C++
组合两个表(C++)
组合两个表(C++)
19 0
|
4月前
|
SQL 存储 关系型数据库
MySQL索引原理(索引、约束、索引实现、索引失效、索引原则)以及SQL优化
MySQL索引原理(索引、约束、索引实现、索引失效、索引原则)以及SQL优化
137 1
|
12月前
|
算法 索引
关系查询处理和查询优化
关系查询处理和查询优化
|
SQL Oracle 关系型数据库
使用复合索引实现数据库查询的优化
使用复合索引实现数据库查询的优化
|
SQL 关系型数据库 MySQL
条件简化&子查询(1)--Mysql基于规则优化(四十四)
条件简化&子查询(1)--Mysql基于规则优化(四十四)
|
SQL 分布式计算 BI
MaxCompute笛卡尔积逻辑的参数优化&复杂JOIN逻辑优化
这篇文章主要讲一个SQL优化反映的两个优化点。分别是: 一、笛卡尔积逻辑的参数优化。 二、一个复杂JOIN逻辑的优化思路。
2057 2
MaxCompute笛卡尔积逻辑的参数优化&复杂JOIN逻辑优化
【每日SQL打卡】​​​​​​​​​​​DAY 2 丨组合两个表【难度简单】
【每日SQL打卡】​​​​​​​​​​​DAY 2 丨组合两个表【难度简单】