字体
第(4/5)页
关灯
   存书签 书架管理 返回目录
    了我们“

    进攻”

    那些数据的方法。就如第4

    章所讨论的,“

    进攻”

    取决于:结果集的数据量、必须

    访问的数据量、可动用的“

    部队”

    (过滤条件)。

    任何大型的、复杂的查询,都可以被分成一连串较简单的步骤,其中一些步骤可以并行执行,

    就像综合战役通常要面对敌军的不同部队。每次战斗的结果差异可能很大,但关键是最后的综

    合结果。

    当我们分析查询的每个步骤时可能不会深入执行细节,但这些步骤可能的组合数量跟国际象棋

    不相上下,可以非常复杂。

    本章讨论存取经过适当规范化的数据时,经常遇到的情况。虽然本章主要讨论查询,但也适用

    于更新和删除cāo作,只要它们也有where

    子句,毕竟要先读取数据才能修改数据。无论是单纯

    为了查询、还是更新或删除记录,过滤数据会遇到的最典型情况有九种:

    小结果集,源表较少,查询条件直接针对源表

    小结果集,查询条件涉及源表之外的表

    小结果集,多个宽泛条件,结果取jiāo集

    小结果集,一个源表,查询条件宽泛且涉及多个源表之外的表

    大结果集

    结果集来自基于一个表的自连接

    结果集以聚合函数为基础获得

    结果集通过简单搜索或基于日期的范围搜索获得

    结果集和别的数据存在与否有关

    本章将依次讨论上述各种情况。至于例子,有的简单明了,有的较为复杂(来自实际案例)。

    虽然案例大小存在差异,但解决问题的模式是相通的。

    通常,在执行查询时,应过滤掉所有不属于结果集的数据,这意味着应尽量采用最高效的搜索

    条件。决定先执行哪个条件,通常是优化器的工作。但是,正如第4

    章所述,优化器必须考虑

    大量不同情况——

    例如表的物理结构、查询编写方式等,所以优化器未必总能“

    理解正确”

    。因

    此,提高xìng能还有很多事情可做,下面对九种模式的讨论中,每种模式均是如此。

    小结果集,直接条件

    Small Result Set, Direct Specific Criteria

    对于典型的在线jiāo易处理,多为返回小结果集的查询,源表数量较少,查询条件也是“直接”针

    对源表的。当我们要通过一组条件查询出少许记录时,首先要注意的就是索引。

    一般而言,通过一个表或通过两个表的连接查询较少记录,只要确保查询有适当的索引支持即

    可。然而,当很多表连接在一起,并且查询条件要参照不同的表时(例如TA 和TB),会面临

    连接顺序的问题。连接顺序的选择,取决于如何更快地过滤不想要的记录。如果统计数据足够

    精确地反映了表的内容,优化器有可能对连接顺序做出适当选择。

    当查询仅返回少量记录,且过滤条件直接针对源表时,我们必须保证这些过滤条件高效;对于

    非常重要的条件,必须事先为相应字段加上索引,以便查询时使用。

    索引可用xìng

    Index Usability

    如第3章所述,对某字段使用函数时,则该字段上的索
上一页 目录 下一页