PRECOMPUTE_SUBQUERY应用的一个例子(转)

PRECOMPUTE_SUBQUERY应用的一个例子

 

http://space.itpub.net/19423/viewspace-667934

SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database
10g Enterprise Edition Release 10.2.0.4.0 - 64bi
PL/SQL Release 10.2.0.4.0 - Production
CORE    10.2.0.4.0      Production
TNS for Linux IA64: Version 10.2.0.4.0 - Production
NLSRTL Version 10.2.0.4.0 - Production

SQL> create table t (id varchar2(10),text varchar2(4000));

表已创建。

SQL> insert into t select '1',object_name from dba_objects;

已创建110613行。

SQL> /

已创建110613行。

SQL> /

已创建110613行。

SQL>insert into t values ('2','aaa');

已创建 1 行。

SQL> create index t_idx on t(id);

索引已创建。

SQL> create index t_idx1 on t(text);

索引已创建。

SQL> exec dbms_stats.gather_table_stats(user,'T',method_opt=>'for all indexed co
lumns',cascade=>true);

PL/SQL 过程已成功完成。

SQL> select id,count(*) from t group by id;

ID           COUNT(*)
---------- ----------
1              331839
2                   1

SQL> set autot trace exp stat
SQL> select * from t
  2   where t.id in (select x.id from t x where x.text='aaa');


执行计划
----------------------------------------------------------
Plan hash value: 2990025524

---------------------------------------------------------------------------------------
| Id  | Operation                    | Name   | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT             |        |   332K|    13M|   315   (3)| 00:00:04 |
|*  1 |  HASH JOIN RIGHT SEMI        |        |   332K|    13M|   315   (3)| 00:00:04 |
|   2 |   TABLE ACCESS BY INDEX ROWID| T      |     7 |   154 |     4   (0)| 00:00:01 |
|*  3 |    INDEX RANGE SCAN          | T_IDX1 |     7 |       |     1   (0)| 00:00:01 |
|   4 |   TABLE ACCESS FULL          | T      |   332K|  7142K|   308   (2)| 00:00:04 |
由于Oracle不知道传递过来的ID列内容,因此,无法得到准确的信息,10053显示,Oracle估算的选择度是1
---------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - access("T"."ID"="X"."ID")
   3 - access("X"."TEXT"='aaa')

统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      1342  consistent gets
          0  physical reads
          0  redo size
        382  bytes sent via SQL*Net to client
        346  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

SQL> select * from t
  2   where t.id in (select /*+precompute_subquery*/ x.id from t x where x.text='aaa')
  3  ;


执行计划
----------------------------------------------------------
Plan hash value: 470836197

-------------------------------------------------------------------------------------
| Id  | Operation                   | Name  | Rows  | Bytes | Cost (%CPU)| Time    |
-------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |       |     1 |    22 |     2   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID| T     |     1 |    22 |     2   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN          | T_IDX |     1 |       |     1   (0)| 00:00:01 |
-------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("T"."ID"='2') 子查询值预先计算,因此此处直接把值传递过来,Oracle可以得到准确的选择度,因此走了索引扫描

统计信息
----------------------------------------------------------
          4  recursive calls
          0  db block gets
         8  consistent gets
          0  physical reads
          0  redo size
        382  bytes sent via SQL*Net to client
        346  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          1  rows processed

原始SQL,10053:

** Performing dynamic sampling initial checks. **
  Column (#2): TEXT(VARCHAR2)
    AvgLen: 21.00 NDV: 44554 Nulls: 0 Density: 2.2445e-05
    Histogram: HtBal  #Bkts: 75  UncompBkts: 75  EndPtVals: 76
  Using density: 2.2445e-05 of col #2 as selectivity of unpopular value pred
** Dynamic sampling initial checks returning FALSE.
  Using density: 2.2445e-05 of col #2 as selectivity of unpopular value pred
  Table:  T  Alias: X     
    Card: Original: 332432  Rounded: 7  Computed: 7.46  Non Adjusted: 7.46
  -----------------------------------------
  END   Single Table Cardinality Estimation
  -----------------------------------------
  Access Path: TableScan
    Cost:  309.06  Resp: 309.06  Degree: 0
      Cost_io: 303.00  Cost_cpu: 82948384
      Resp_io: 303.00  Resp_cpu: 82948384
  Using density: 2.2445e-05 of col #2 as selectivity of unpopular value pred
  Access Path: index (AllEqRange)
    Index: T_IDX1
    resc_io: 10.00  resc_cpu: 74174
    ix_sel: 2.2485e-05  ix_sel_with_filters: 2.2485e-05
    Cost: 4.00  Resp: 4.00  Degree: 1
******** Begin index join costing ********
  ****** trying bitmap/domain indexes ******
  Using density: 2.2445e-05 of col #2 as selectivity of unpopular value pred
  Using density: 2.2445e-05 of col #2 as selectivity of unpopular value pred
  Access Path: index (AllEqRange)
    Index: T_IDX1
    resc_io: 3.00  resc_cpu: 22964
    ix_sel: 2.2485e-05  ix_sel_with_filters: 2.2485e-05
    Cost: 1.20  Resp: 1.20  Degree: 0
  ****** finished trying bitmap/domain indexes ******
  Access Path: index (FullScan)
    Index: T_IDX
    resc_io: 604.00  resc_cpu: 70669350
    ix_sel: 1  ix_sel_with_filters: 1
    Cost: 243.67  Resp: 243.67  Degree: 0
******** Cost index join ********
Index join: Considering index join to index T_IDX1
Index join: Joining index T_IDX
Ix HA Join
  Outer table:
    resc: 1.20  card 7.46  bytes: 31  deg: 1  resp: 1.20
  Inner table:
    resc: 304.58  card: 332432.00  bytes: 12  deg: 1  resp: 304.58
    using dmeth: 2  #groups: 1
    Cost per ptn: 2.93  #ptns: 1
    hash_area: 2 (max=256)   Hash join: Resc: 308.71  Resp: 308.71  [multiMatchCost=0.00]
******** Index join cost ********
Cost: 308.71  
******** End index join costing ********
  Best:: AccessPath: IndexRange  Index: T_IDX1
         Cost: 4.00  Degree: 1  Resp: 4.00  Card: 7.46  Bytes: 0
***************************************
SINGLE TABLE ACCESS PATH
  -----------------------------------------
  BEGIN Single Table Cardinality Estimation
  -----------------------------------------
*** 2010-07-13 13:24:48.518
** Performing dynamic sampling initial checks. **
** Dynamic sampling initial checks returning FALSE.
  Table:  T  Alias: T     
    Card: Original: 332432  Rounded: 332432  Computed: 332432.00  Non Adjusted: 332432.00
  -----------------------------------------
  END   Single Table Cardinality Estimation
  -----------------------------------------
  Access Path: TableScan
    Cost:  307.85  Resp: 307.85  Degree: 0
      Cost_io: 303.00  Cost_cpu: 66326784
      Resp_io: 303.00  Resp_cpu: 66326784
******** Begin index join costing ********
  ****** trying bitmap/domain indexes ******
  Access Path: index (FullScan)
    Index: T_IDX
    resc_io: 604.00  resc_cpu: 70669350
   ix_sel: 1  ix_sel_with_filters: 1
    Cost: 243.67  Resp: 243.67  Degree: 0
  Access Path: index (FullScan)
    Index: T_IDX
    resc_io: 604.00  resc_cpu: 70669350
   ix_sel: 1  ix_sel_with_filters: 1
    Cost: 243.67  Resp: 243.67  Degree: 0
  ****** finished trying bitmap/domain indexes ******
******** End index join costing ********
  Best:: AccessPath: TableScan
         Cost: 307.85  Degree: 1  Resp: 307.85  Card: 332432.00  Bytes: 0
***************************************


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8102208/viewspace-693883/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8102208/viewspace-693883/

内容概要:本文介绍了一种利用遗传算法优化BP神经网络进行回归预测的方法,并提供了完整的MATLAB程序代码。主要内容包括数据预处理、遗传算法与BP神经网络的结合、适应度函数的设计以及最终的预测结果展示。文中详细解释了如何将Excel格式的数据导入MATLAB并进行归一化处理,如何定义适应度函数来优化BP神经网络的参数(如激活函数和学习率),并通过遗传算法找到最优解。实验结果显示,在某工业数据集上,经过遗传算法优化后的BP神经网络预测精度显著提高,从原来的0.82提升到了0.91。此外,还提到了一些实用技巧,比如调整遗传代数、修改激活函数等方法进一步改进模型性能。 适合人群:对机器学习有一定了解的研究人员和技术爱好者,特别是那些希望深入了解遗传算法与BP神经网络结合应用的人士。 使用场景及目标:适用于需要快速构建高效回归预测模型的场景,尤其是当传统BP神经网络无法达到预期效果时。通过本篇文章的学习,读者能够掌握一种有效的优化手段,从而提高模型的泛化能力和预测准确性。 其他说明:代码可以直接应用于新的数据集,只需确保数据格式符合要求(Excel格式)。对于想要深入探索或改进现有模型的人来说,还可以尝试更换不同的激活函数或其他调节方式来获得更好的表现。
粒子群优化(PSO)是一种基于群体智能的优化算法,由James Kennedy和Russell Eberhart于1995年提出,灵感来源于鸟群或鱼群的群体行为 。它通过模拟群体间的协作与竞争,利用个体和群体的经验来迭代求解问题 。PSO常用于优化支持向量机(SVM)的参数,以提升模型性能 。SVM是一种强大的监督学习模型,通过寻找最优超平面实现分类或回归 ,其性能依赖于参数C(惩罚因子)和γ(核函数参数) 。 PSO优化SVM参数的过程如下:首先随机生成一组粒子,每个粒子代表一组SVM参数(C和γ) 。接着,使用这些参数训练SVM模型,并通过测试集评估性能(如准确率或F1分数),作为粒子的适应度值 。然后,根据个体和全局最优解的位置更新粒子的速度和位置 ,速度决定移动方向和速度,位置表示参数组合 。粒子群共享全局最优解信息,推动所有粒子向最优解移动 。重复上述步骤,直至达到预设迭代次数或满足停止条件 。 在实际应用中,PSO-SVM的实现通常包括以下部分:数据预处理(导入、清洗、标准化等) ;PSO算法实现(定义粒子结构、初始化种群、设定优化目标和边界条件) ;SVM模型训练(使用不同参数组合) ;适应度计算(评估模型性能) ;更新规则(根据PSO算法更新速度和位置) ;主循环(多轮迭代,记录全局最优解) ;结果分析(展示最佳参数组合,进行最终预测) 。 PSO优化SVM参数的过程自动高效,可提高模型泛化能力和预测准确性 。对于初学者,这是一个很好的实践案例,有助于理解优化算法在机器学习中的应用 ;对于有经验的开发者,可作为进一步研究和改进的基础,例如探索PSO变体或结合其他优化方法 。
在移动开发领域,Android Studio 是谷歌推出的官方集成开发环境(IDE),专门用于开发 Android 应用。本项目旨在通过 Android Studio 创建一个模仿流行生活分享平台小红书的简单应用。小红书以其强大的社交功能和丰富的用户生成内容而闻名,融合了购物、博客和社交媒体的特点。通过复刻小红书,开发者可以学习构建类似的混合型应用。 1. Android Studio 核心知识点 界面设计:利用 Android Studio 的布局编辑器(可通过 XML 编码或拖放操作)来构建用户界面,涵盖 TextView、ImageView、RecyclerView 等多种组件。 主题与样式:掌握 Material Design 的应用,自定义主题和样式,以实现类似小红书的视觉效果。 Activity 与 Fragment:理解 Activity 和 Fragment 的生命周期,以及它们在多屏幕适配中的作用。 Intent:通过 Intent 实现页面跳和数据传递。 2. 小红书 App 特性实现 登录注册:实现用户登录和注册功能,可能涉及 OAuth 或自定义认证机制。 数据获取与展示:使用网络请求库(如 Retrofit 或 OkHttp)从服务器获取数据,并通过 RecyclerView 展示,可能采用瀑布流布局。 图片加载:借助图片加载库(如 Glide 或 Picasso)优化图片加载速度和性能。 社交功能:实现评论、点赞、分享等社交功能,涉及数据库操作和网络通信。 动态通知:集成 Firebase Cloud Messaging(FCM)实现即时消息推送。 3. Android SDK 与相关库 Android SDK:熟悉不同版本的 Android API,确保应用的兼容性。 Room Persistence Library:用于本地数据库存储,缓存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值