摘要: In和Exists子查询可以生成同样的结果,不过它们的做法截然不同。通常它们的表现各有优劣,这取决于实际的数据分布。例如:SELECTE.EMPNO,E.LASTNAME FROMEMPE WHEREE.EMPNOIN (SELECTD.MGRNO FROMDEPARTMENTD WHERED.DEPTNOLIKE'D%')也可以写为:SELECTE.EMPNO,E.LASTNAME FROMEMPE WHEREEXISTS (SELECT1 FROMDEPARTMENTD WHERED.MGRNO=E.EMPNO ANDD.DEPTNOLIKE'D%')这些相 阅读全文
posted @ 2013-07-12 09:13 小土_ 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 大多数情况下,Distinct函数都会导致对最终结果集完成一次排序,因此,这就成为成本最昂贵的排序之一。Distinct一直是SQL语言中成本最高的函数之一。不过,对于DB2 V9,优化工具会尽量利用索引来消除为确定唯一性所带来的排序,其方法类似于目前用Group By语句完成优化时的做法。不过,实际上不必在SQL中使用Distinct,完全可以使用其他方式重写查询来得到同样的结果,这样做往往更为高效。开发人员现在都很喜欢用Distinct,很多人在所有语句上都会加上Distinct来确保不出现重复。不过这种代码的效率很低。在对应用调优时,我首先要做的事情之一就是审查源代码,找出所有包含Dis 阅读全文
posted @ 2013-07-12 09:12 小土_ 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 如果Select部分包含不需要的列,优化工具会选择Indexonly = ‘N’,这会强制DB2必须进入数据页来得到所请求的特定列,这就要求更多的I/O操作。另外,由于这些多余的列可能是某些排序的一部分,这样一来,就需要创建和传递一个更大的排序文件,相应地会使排序的成本更高。对于排序来讲,其规模大小会直接影响成本。随着排序规模变大,成本也会更昂贵。如果查询中涉及多个表,指定多余的列还会对优化工具选择何种联接类型产生影响。目前,z/OSDB2中有4种联接类型(嵌套循环联接、合并扫描联接、复合联接和星型联接),DB2 LUW中还有一种哈希联接。优化工具会根据不同的原因选择各种联接类型。如果包含了根 阅读全文
posted @ 2013-07-12 09:11 小土_ 阅读(308) 评论(0) 推荐(0) 编辑
摘要: 肯定有办法重写谓词,使得谓词列上不再使用数学运算。在SQL语句的Select部分对列应用数学运算是完全可以的,不过如果在Where部分中对列使用数学运算,就会自动将谓词变成不可索引的谓词。例如:SELECTEMPNO,LASTNAME FROMEMP WHERESALARY*1.1>50000.00应当写为:SELECTEMPNO,LASTNAME FROMEMP WHERESALARY>50000.00/1.1如上所示重写这个SQL语句之后,DB2可以选择使用列SALARY上的索引(如果存在这样一个索引)。但是如果这个语句编写为直接对SALARY列应用数学运算, DB2就无法使用 阅读全文
posted @ 2013-07-12 09:09 小土_ 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 开发人员编写SQL代码时,为了确保得到更好的性能,需要采取一些措施,下面会列出其中最有效的一些做法。在关系型数据库管理系统(relational database management system,RDBMS)中,通常90%的运行时问题源于10%的应用问题。与以往相比,如今的DB2优化工具在选择正确的访问路径来满足SQL需求方面已经更胜一筹,不过仍不能保证百分之百正确。目前的所有调优工作都与CPU使用、I/O和并发直接关联。本章的大部分内容都会针对SQL编码,不过所有内容都与性能和调优有关。本书中给出的技巧和提示是为开发人员提供的一般最佳实践,适用于大多数RDBMS。在这些数据库系统中,可能 阅读全文
posted @ 2013-07-12 09:07 小土_ 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 给软件工程师的自学建议与现在大学生的情况类似,学校学的专业知识总是与实际工作中需要的知识相差甚远。或许进入我们这个行业就注定要一辈子不离书本、不离学习了。由于软硬件技术的推陈出新,学校教的C/Basic/Pascal/FoxBase还真从来没直接用于实际工作中过,后来工作中用到的具体知识全凭毕业之后看书自学。为此毕业以来买书的投入每年逾千,那时候怀着傻傻的投资的心态去激励自己努力学习:花200块钱买本书,学会某种编程语言或者工作技能,将来工资每月上涨三百、五百,岂不很划算!于是一路过来,从编程语言到系统架构、从行业应用到项目管理,家里堆着各种如今已毫无价值的书籍。如今,虽然早已没必要再为学习某 阅读全文
posted @ 2013-07-11 09:00 小土_ 阅读(408) 评论(0) 推荐(0) 编辑
摘要: (《新知客》,2010年8月。本来应该等到8月1日再发,但今天突然发现此文已经被在网上泄漏出来了!)随着畅销书《异类》的流行,“练习一万小时成天才”这个口号现在是尽人皆知。也许仍然有不少人相信那些不世出的天才必有天生的神秘能力,但科学家通过大量的调查研究已经达成共识,那就是所有顶级高手都是练出来的。不但如此,最近几年的科学进展,人们可能第一次拥有了一个关于怎样炼成天才的统一理论。好消息是除了某些体育项目对天生的身高和体型有特殊要求之外,神秘的天生素质并不存在,也就是说人人都有可能成为顶级高手。早在20多年以前,芝加哥大学的教育学家 Benjamin Bloom 就曾经深入考察过120名从音乐到 阅读全文
posted @ 2013-07-09 11:25 小土_ 阅读(130) 评论(0) 推荐(0) 编辑