zoukankan      html  css  js  c++  java
  • 深入说明DB2数据库运用体系的功用优化2

     

    假定待排序的列有多个,可以在这些列上创建复合索引(compound index),即索引由多个字段复合而成。

    ◆查询优化

    目下当今的数据库产物在体系查询优化方面曾经做得越来越好,但因为用户提交的SQL语句是体系优化的根基,很难想象一个原来蹩脚的查询筹算经由体系的优化之后会变得高效,是以用户所写语句的利害至关紧张。下面重点说明改善用户查询筹算的办理方案。

    1.排序

    在良多时辰,该当简化或休止对大型表停止反复的排序。当可以运用索引主动以恰当的次序递次产生输入时,可以休止排序的步调,当以下的情形产生时,排序就不克不及省略:

    索引中不包罗一个或几个待排序的列;

    group by或order by子句中列的次序递次与索引的次序递次纷例如样;

    排序的列来自差其余表。

    为了休止不需要的排序,就要正确地增建索引,合理地合并数据库表,虽然无意能够影响表的规范化,但相搪塞听命的提高是值得的。假定排序不行休止,那么该当试图简化它,如裁汰排序列的范围等。
    2.主键

    主键用整型会极大的提高查询听命,而字符型的斗劲开支要比整型的斗劲开支大良多,用字符型数据作主键会使数据拔出、更新与查询的听命低落。数据量小的时辰这点低落能够不会被注重,可是当数据量大的时辰,小的改造也可以提高体系的相应速度。

    3.嵌套查询

    在SQL言语中,一个查询块可以作为另一个查询块中谓词的一个操纵数。是以,SQL查询可以层层嵌套。例如在一个大型散布式数据库体系中,有订单表Order、订单信息表OrderDetail,假定需求两表联络关系查询:

    SELECT CreateUser
    FROM Order
    WHERE OrderNo IN
    ( SELECT OrderNo
    FROM OrderDetail
    WHERE Price=0.5)
     
     
    在这个查询中,找出报纸单价为0.5元的收订员名单。上层查询前去一组值给上层查询,然后由上层查询块再根据上层块供给的值持续查询。在这种嵌套查询中,对上层查询的每一个值OrderNo,上层查询都要对表OrderDetail停止一切扫描,实施听命显然不会高。在该查询中,有2层嵌套,假定每层都查询1000行,那么这个查询就要查询100万行数据。在体系开支中,对表Order的扫描占82%,对表OrderDetail的搜刮占16%。假定我们用连接来改换,即:

    SELECT CreateUser
    FROM Order,OrderDetail
    WHERE Order.OrderNo=OrderDetail.OrderNo AND Praice=0.5
     
     
    来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2008/0128/46640_2.html


    版权声明: 原创作品,许可转载,转载时请务必以超链接情势标明文章 原始出处 、作者信息和本声明。否则将追究执法责任。

  • 相关阅读:
    sql server中sql语句中单引号怎么转义?【转】
    如何配置Eclipse+Tomcat 开发环境【转】
    JBoss和Tomcat版本、及Servlet、JSP规范版本对应一览 【转】
    P1955 [NOI2015]程序自动分析 && 离散化学习 && lower_bound学习
    P1604 B进制星球
    [OI
    [OI
    Aiyi's Code Style for OI
    POJ1186 方程的解数
    [Daily Life]百首好歌
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975425.html
Copyright © 2011-2022 走看看