07 SQL优化技术

本章提要
------------------------------------------------------
调优技术及什么时候使用
------------------------------------------------------
绝对有必要问自己如下三个问题:
~ 这条SQL语句是已知并且确定不变的么?
~ 即将采用的措施会影响到单个会话(甚至整个系统)的某一条SQL语句还是全部SQL语句?
~ 有可能改变这条SQL语句么?

7.1 改变访问结构
    SQL语句的响应时间往往不仅取决于这些数据是如何存储的, 而且也取决于这些数据是如何访问的.
    当你质疑目前的SQL语句时, 首先需要做的是检查当前的访问结构, 从数据字典获得信息, 回答以下问题:
    ~ 语句中涉及的表的结构类型是什么? 堆表, 索引组织表, 还是外部表? 以及表是否存储在聚簇中?
    ~ 包含所需数据的物化视图可用么?
    ~ 在表, 聚簇和物化视图中存在哪些索引? 这些索引建立在哪些字段上, 这些字段的顺序又如何?
    ~ 所有这些数据段(表,索引等逻辑存储结构)是如何被分区的?
    当你要改变访问结构时, 最重要的是仔细考虑可能的副作用.
7.2 修改SQL语句
    SQL 常常可以通过不同的方法提交一个完全相同的请求. 举例:
   

/*
     以下4个查询, 返回的结果集是一样的, 但是它们的执行计划是不一样的
    SQL 可以通过很多不同的方法返回一样的结果集
    哪种是最好的方法呢? 是开发者要考虑的
 */

SELECT deptno
FROM dept
WHERE deptno NOT IN (SELECT deptno FROM emp);

SELECT deptno
FROM dept
WHERE NOT EXISTS (SELECT 1 FROM emp WHERE emp.deptno = dept.deptno)

SELECT deptno FROM dept
MINUS
SELECT deptno FROM emp

SELECT dept.deptno
FROM dept, emp
WHERE dept.deptno = emp.deptno(+) AND emp.deptno IS NULL
7-1


7.3 提示
    指定提示, 你的目标是减少查询优化器要评估的执行计划的数据.     
    ~ 提示必须紧跟着 delete, insert, merge, update 关键字.
    ~ 在注释分隔符之后的第一个字符必须是加号(+)
    提示的分类: 很多, 具体参考 oracle的 sql reference, 11g以后可以通过 v$sql_hint 视图来查询
    提示的有效域: 提示仅仅对单个查询块起作用. 例如:
   

-- 两个查询块分别指定了提示

WITH
emps AS (SELECT /*+ full(emp) */ deptno, count(*) AS cnt
FROM emp
GROUP BY deptno)
SELECT /*+ full(dept) */ dept.dname, emps.cnt
FROM dept, emps
WHERE dept.deptno = emps.deptno
7-2


    等等吧, 个人感觉提示在测试的时候使用较多, 真正开发时, 感觉不怎么使用提示, 所以这部分没有完成, 需要的时候再补充吧.
    另外, 提示只是给查询优化器做一个参考, 查询优化器也未必一定就使用提示.
7.4 改变执行环境
    要修改很多参数, 个人感觉默认的就可以, 再确认吧
7.5 SQL概要
    图形化界别的东西, 但是感觉好像是收费之类, 目前先跳过

总结一下, 目前我能用的是, 改变访问结构, 修改SQL语句, 使用提示来测试, 只有这些.

训练数据保存为deep_convnet_params.pkl,UI使用wxPython编写。卷积神经网络(CNN)是一种专门针对图像、视频等结构化数据设计的深度学习模型,在计算机视觉、语音识别、自然语言处理等多个领域有广泛应用。其核心设计理念源于对生物视觉系统的模拟,主要特点包括局部感知、权重共享、多层级抽象以及空间不变性。 **1. 局部感知与卷积操作** 卷积层是CNN的基本构建块,使用一组可学习的滤波器对输入图像进行扫描。每个滤波器在图像上滑动,以局部区域内的像素值与滤波器权重进行逐元素乘法后求和,生成输出值。这一过程能够捕获图像中的边缘、纹理等局部特征。 **2. 权重共享** 同一滤波器在整个输入图像上保持相同的权重。这显著减少了模型参数数量,增强了泛化能力,并体现了对图像平移不变性的内在假设。 **3. 池化操作** 池化层通常紧随卷积层之后,用于降低数据维度并引入空间不变性。常见方法有最大池化和平均池化,它们可以减少模型对微小位置变化的敏感度,同时保留重要特征。 **4. 多层级抽象** CNN通常包含多个卷积和池化层堆叠在一起。随着网络深度增加,每一层逐渐提取更复杂、更抽象的特征,从底层识别边缘、角点,到高层识别整个对象或场景,使得CNN能够从原始像素数据中自动学习到丰富的表示。 **5. 激活函数与正则化** CNN中使用非线性激活函数来引入非线性表达能力。为防止过拟合,常采用正则化技术,如L2正则化和Dropout,以增强模型的泛化性能。 **6. 应用场景** CNN在诸多领域展现出强大应用价值,包括图像分类、目标检测、语义分割、人脸识别、图像生成、医学影像分析以及自然语言处理等任务。 **7. 发展与演变** CNN的概念起源于20世纪80年代,其影响力在硬件加速和大规模数据集出现后真正显现。经典模型如LeNet-5用于手写数字识别,而AlexNet、VGG、GoogLeNet、ResNet等现代架构推动了CNN技术的快速发展。如今,CNN已成为深度学习图像处理领域的基石,并持续创新。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值