• <海量数据库解决方案>2011050601


    【摘抄】

    向局部范围扫描引导的方法

    &利用访问路径实现对sort的代替
        不论是一般索引还是聚簇索引都按照索引列值进行了排序
        索引列序也是能否实现局部范围扫描的一个非常重要的前提条件
       
    &只使用索引的局部范围扫描
        索引只在查找第一个满足条件的索引行时发生随机读取,之后执行的是连续扫描,但是从表中读取数据始终都是按照随机方式进行的。

    &灵活使用min、max局部范围扫描
        对应的章节仅仅描述“MAX,MIN的处理”,暂时没有发现怎么利用MAX,MIN来局部范围扫描

    &filter型局部范围扫描
        一般采用Exists来过滤,但不是唯一的
       
    &利用rownum的局部范围扫描
        Rownum并不是物理存储在表中的列,而是一种像SYSDATE或USER等一样可以被使用在任何SQL语句中的虚拟列。{在Oracle中}
        Rownum并不是被读取行的编号,而是满足查询条件最终结果行的流水号。
        个人觉得:在Sql2K中,大部分可以使用Set RowCount Num来设置查询的输出条数。但是没有Rownum的灵活使用方式,比如where Rownum = 10之类的写法。Set RowCount Num效果类似这样的Where Rownum <= Num。【注意,msSQL和Oracle的语法肯定不同,只是比对学习而已】

    &利用嵌套视图的局部范围扫描
        运用嵌套视图来实现局部范围扫描的原理:
        将必须使用全部范围扫描的部分捆绑在嵌套视图中,以确保视图之外的部分能够以局部范围扫描方式来执行。

    &利用函数的局部范围扫描
        关于此节信息,书中讲解了些,但不容易理解。个人建议:使用db自带的内部函数,而非用户自定义函数。
        另外,函数每次只返回一个值;当然可以用串接字符串和分解字符串来处理,这部分的函数也是内部函数,效率另算。

    &利用查询语句二元化特征的局部范围扫描
        关于此节数据,有些语法仅在ORACLE上;在msSql没有对应的。
        书中对查询语句二元化特征的范例,暂时没有理会到精要,后续继续阅读

    &web留言板中的局部范围扫描
        此节讲解的是如何提高数据提取速度
        方案:
        1.使用索引替代排序来实现按照局部范围扫描,并直接输出指定结果
        2.利用Rownum来指定要求输出的行数并中止执行
        3.连锁执行计划,是指在驱动查询条件由or或in运算符构成时,将整个sql分解成多个独立sql以实现单独读取,并将结果进行合并后输出。
       
        关于此节内容,和实践有关系,上述方案可根据实际来使用~




    【需要不断阅读并在工作中实践~】



    无论生活、还是技术,一切都不断的学习和更新~~~努力~
  • 相关阅读:
    475. Heaters
    69. Sqrt(x)
    83. Remove Duplicates from Sorted List Java solutions
    206. Reverse Linked List java solutions
    100. Same Tree Java Solutions
    1. Two Sum Java Solutions
    9. Palindrome Number Java Solutions
    112. Path Sum Java Solutin
    190. Reverse Bits Java Solutin
    202. Happy Number Java Solutin
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/2038520.html
Copyright © 2020-2023  润新知