• λ我爱Aspx >> 数据库 >> 数据库系统优化,高性能sql语句
  • 数据库系统优化,高性能sql语句

  • :未知  Դ:csdn  :2007-3-18 23:21:24  ؼ:sql
  • LECCO SQL Expert自动优化实例

    假设我们从源代码中抽取出这条SQL语句(也可以通过内带的扫描器或监视器获得SQL语句):

    SELECT COUNT(*)

    FROM EMPLOYEE

    swheresEXISTS (SELECT 'X'

    FROM DEPARTMENT

    swheresEMP_DEPT=DPT_ID

    AND DPT_NAME LIKE 'AC%')

    AND EMP_ID IN (SELECT SAL_EMP_ID

    FROM EMP_SAL_HIST B

    swheresSAL_SALARY > 70000)

    按下“优化”按钮后,经过10几秒,SQL Expert就完成了优化的过程,并在这10几秒的时间里重写产生了2267 条等价的SQL语句,其中136条SQL语句有不同的执行计划。

    接下来,我们可以对自动重写产生的136条SQL语句进行批运行测试,以选出性能最佳的等效SQL语句。按下“批运行” 按钮,在“终止条件” 页选择“最佳运行时间SQL语句”,按“确定”。

    经过几分钟的测试运行后,我们可以发现SQL124的运行时间和反应时间最短。运行速度约有22.75倍的提升(源SQL语句运行时间为2.73秒,SQL124运行时间为0.12秒)。现在我们就可以把SQL124放入源代码中,结束一条SQL语句的优化工作了。

    “边做边学式训练”提升SQL开发水平

    LECCO SQL Expert不仅能够找到最佳的SQL语句,它所提供的“边做边学式训练”还能够教开发人员和数据库管理员如何写出性能最好的SQL语句。LECCO SQL Expert的“SQL比较器”可以标明源SQL和待选SQL间的不同之处。

    以上面优化的结果为例,为了查看源SQL语句和SQL124在写法上有什么不同,我们可以按下“比较器” 按钮,对SQL124和源SQL语句进行比较。“SQL 比较器”将SQL124相对于源SQL语句的不同之处以蓝颜色表示了出来。如果选择“双向比较”复选框,“SQL 比较器”可以将两条SQL语句的不同之处以蓝色表示。当然,我们也可以从源语句和重写后的SQL 语句中任选两条进行比较。

    从比较的结果可以看到,重写后的SQL124把第一个Exists改写成了In;在字段DPT_ID上进行了合并空字符串的操作,以诱导数据库先执行子查询中的

    (SELECT DPT_ID||''

    FROM DEPARTMENT

    WHERE DPT_NAME LIKE 'AC%')

    在子查询完成后,再与EMPLOYEE表进行嵌套循环连接(Nested Loop Join)。

    如果觉得对写法的改变难以理解,还可以点中“执行计划”复选框,通过比较两条SQL语句的执行计划的不同,来了解其中的差异。在查看执行计划过程中,如果有什么不明白的地方,可以点中“SQL信息按钮”,再点击执行计划看不明白的地方,LECCO SQL Expert的上下文敏感帮助系统将提供执行计划该处的解释。

    Ҷƪл˵?
  • һƪ专家视点:快速开发框架的编码总结
    һƪ亲历者讲述 从长角开始的Vista幕后传奇(一)