WITH+HInt MATERIALIZE 不见得有效
只调用一次,物化没用
MATERIALIZE
语法:MATERIALIZE
描述:指示优化器将内联视图实体化————执行过程中会创建基于视图的临时表。
with dd as (select object_type,owner,object_Id from dba_objects)
select OBJECT_TYPE, count(*)
from dd
group by OBJECT_TYPE
union all
select owner, count(*) from dd group by owner; with dd as (select /*+materialize */object_type,owner,object_Id from dba_objects)
select OBJECT_TYPE, count(*)
from dd
group by OBJECT_TYPE
union all
select owner, count(*) from dd group by owner;
下面有文章介绍其好处
http://www.itpub.net/thread-1443086-1-1.html
WITH子句与未公开HINT MATERIALIZE联合使用, 取代临时表
运行环境:
ORACLE, Release 11.2.0.1.0.
描述:
在SQL-99中,查询语句增加了WITH子句,可以使相同的子查询在一个sql中只执行一次,另外也可以把复杂的查询简化、增加可读性。
另外,我们知道利用ORACLE的GTT(GLOBAL TEMPORARY)全局临时表、MATERIALIZE VIEW物化视图来提高查询的效率。
其实我们可以通过WITH与未公开的提示(HINT)MATERIALIZE联合使用,在子查询结果记录数不是太多的情况下,取代GTT和物化视图。
,,,,,,,,
执行结果,花费时间减少一半。
materialize这个hint是oracle没有公开的提示,它指示ORACLE CBO在with子句内物化临时表。这在oracle10g之后是没有必要的,但是实际使用with时,如果发现没有被物化,可以用此hint来强制oracle作此处理,使此子查询(临时表)只被处理一次。
结论:
在一定的情况下,我们可以用with与hint materialize结合的方式取代全局临时表和物化视图来提高查询效率,使用情况如下。
1. 当次查询的结果记录数不是太多的情况下,如果结果记录集比较庞大,还是推荐使用GTT,因为那里面可以指定索引等。
2. 查询值和查询过滤条件中如果含有重复执行的表达式,可以用此方式减少一次计算。
3. 相同子查询被多次使用。
参考page:
http://www.remote-dba.net/oracle ... with_sql_clause.htm
http://www.dba-oracle.com/t_materialize_sql_hint.htm
我看了下 感觉不是加了物化提示才减少时间 或许是 SELECT /*+ NO_MERGE(V_TMP) FULL(V_TMP) */ * 这提示减少时间吧
深圳-道道(726442711) 17:25:53
只调用一次,物化没用
MATERIALIZE
语法:MATERIALIZE
描述:指示优化器将内联视图实体化————执行过程中会创建基于视图的临时表。
可以防止 外层谓词内推和内联视图展开.
WITH 语句本身可以共享结果 在同一条语句内 增加物化提示 是否是多余之举 而且是官方非公开的
WITH+HInt MATERIALIZE 不见得有效的更多相关文章
- ORACLE使用WITH AS和HINT MATERIALIZE优化SQL解决FILTER效率低下
在做项目的过程中,一个页面使用类似例如以下的SQL查询数据.为了保密和使用方便,我把项目中有关的表名和字段替换使用ORACLE数据库中的系统表和字段. 在我所做的项目中.类似ALL_TABLES ...
- oracle hint inline materialize
当我们使用with的时候,oracle可能会把with里面的结果转换为暂时表.这是仅仅是可能,由于CBO会推断. inline是不转换成暂时表.materialize是强制转换成暂时表. 制造数据 d ...
- with as 加上 materialize hint 生成实质临时表
WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...
- WITH AS and materialize hints
WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...
- 转://WITH AS and materialize hints
WITH AS: 就是将一个子查询部分独立出来,有时候是为了提高SQL语句的可读性,有时候是为了提高SQL语句性能. 如果一个SQL语句中,某个表会被访问多次,而且每次访问的限制条件一样的话,就可以使 ...
- oracle优化-leading提示和ordered提示以及materialize提示
以下内容适用于oracle 10.2.0.5及其以上版本 一个查询很慢,原始SQL如下: select a.* from (select ssi.ID, 'small_station_info' TB ...
- mongodb之使用explain和hint性能分析和优化
当你第一眼看到explain和hint的时候,第一个反应就是mysql中所谓的这两个关键词,确实可以看出,这个就是在mysql中借鉴过来的,既然是借鉴 过来的,我想大家都知道这两个关键字的用处,话不多 ...
- {"errcode":40097,"errmsg":"invalid args hint: [vjNe7xxxxxx8vr19]"}——记录一次微信错误处理
错误情况概述: 启动应用之后,微信调用 相机拍照 等接口是可以正常使用的, 但是过了一段时间(2个小时左右--token/jsapi_ticket的过期时间),微信调用相机拍照的功能失效,启用debu ...
- 【转】Oracle索引HINT的使用
转自:Oracle索引HINT的使用 存储在数据库中数据的分布情况开发人员或管理员比Oracle优化器更加的清楚,在优化器不能作出最有查询路径选择的情况下,使用HINT(提示)人为的固定查 ...
随机推荐
- 纯JAVA驱动:sqlserver版本不同,驱动与连接也有所区别
纯JAVA驱动:// 2005 版本:驱动:Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");连接:”jd ...
- 搞清楚学习Web的目的,是为了推广自己的产品和服务,不是为了替人接单做网页
只有这样,Web才不会沉沦于下流,才会对自己的事业有真正的帮助-
- 17.1.1 How to Set Up Replication
17.1.1 How to Set Up Replication 17.1.1.1 Setting the Replication Master Configuration 17.1.1.2 Sett ...
- Android的BUG(四) - Android app的卡死问题
做android,免不了要去运行一些跑分程序,常用的跑分程序有quadrant(象限),nbench,安兔兔等.作为系统工程师,对这些跑分 程序都非常的不屑,这个只能是一个不客观的参考,但客户都喜欢拿 ...
- 二、Nginx变量
$arg_PARAMETER 功能:如果在请求中设置了查询字符串,那么这个变量包含在查询字符串是GET请求PARAMETER中的值. $args 功能:该变量的值是GET请求在请求行中的参数. $bi ...
- 03-Foundation中NSMutableArray遍历、复制和排序
目录: 一.NSString补充 二.NSMutableArray可变数组 三.遍历 四.NSArray支持的新语法 五.数组复制 六.数组的排序 SDK.API.Foundation.Cocoa是什 ...
- 使用代码辅助生成工具CodeSmith -- 生成NHibernate的映射文件
首先下载CodeSmith工具:在百度云中,在CodeSmith文件夹中. 安装,使用激活工具激活. 然后下载NHibernate模板,也是在百度云中,在CodeSmith文件夹中. 之后直接点击NH ...
- perl json模块
JSON - JSON (JavaScript Object Notation) encoder/decoder 简介: use JSON; # imports encode_json, decode ...
- MFC网页访问的实现示例
本示例使用MFC 类CInternetSession 建立连接,使用 CHttpFile读取内容. 首先,建立一个MFC对话框项目,界面如下: 1. 添加头文件: #include <afxin ...
- Emmet插件
p{font-size: 18px; color: #666;} body{background-color:#F3F3F3} .code{color:#3974C3;font-size: 14px; ...