展开全部

主编推荐语

数据库专家20余年工作经验结晶,100余条优化SQL语句的技巧以及编写高性能SQL语句的原则和标准。

内容简介

本书共7章:第1章总结了116条优化SQL语句的技巧和实践;第2章讲解了 SQL语句中提示的编写方法和技巧;第3章讲解了编写高质量SQL语句需要遵守的SQL标准和原则;第4章介绍了SQL程序走查;第5章用2个实例介绍了如何检查存在性;第6章介绍了Runstats,用来得到一些统计信息;第7章讲解了DB2性能优化的“15步调优法”,被誉为DB2性能调优领域的无价之宝,适用于各种情况下的性能调优问题。本书最后还有2个附录,分别介绍了谓词的重写示例和DB2 SQL中的术语。

目录

  • 版权信息
  • 译者序
  • 前言
  • 免责声明
  • 致谢
  • 第1章 SQL优化技巧宝典100+
  • 1.去除在谓词列上编写的任何标量函数
  • 2.去除在谓词列上编写的任何数学运算
  • 3.SQL语句的Select部分只写必要的列
  • 4.尽可能不用Distinct
  • 5.尽量将In子查询重写为Exists子查询
  • 6.确保宿主变量定义为与列数据类型匹配
  • 7.由于优化工具处理“或”逻辑可能有问题,所以尽量采用其他方式重写
  • 8.确保所处理的表中数据分布和其他统计信息正确并反映当前状况
  • 9.尽可能用UNION ALL取代UNION
  • 10.考虑使用硬编码还是使用宿主变量
  • 11.尽可能减少DB2的SQL请求
  • 12.尽量将区间谓词重写为Between谓词
  • 13.考虑使用全局临时表
  • 14.优先使用Stage 1谓词而不是Stage 2谓词
  • 15.记住(某些)谓词的顺序很重要
  • 16.多个子查询排序
  • 17.索引关联子查询
  • 18.了解DB2 Explain工具
  • 19.使用工具进行监控
  • 20.采用提交和重启策略
  • 21.实现优良的索引设计
  • 22.避免与非列表达式不一致
  • 23.所有筛选逻辑放在应用代码之外
  • 24.确保涉及Min和Max的子查询谓词要处理可能返回Null的情况
  • 25.如果查询只选择数据,一定要把游标处理写为For Fetch Only(只获取)或For Read Only(只读)
  • 26.避免只是为了帮助确定代码逻辑应当执行更新还是插入而从表中选择一行
  • 27.避免只是为了得到更新值而从表中选择一行
  • 28.利用动态SQL语句缓存
  • 29.避免使用Select*
  • 30.当心可以为Null的列,还要当心SQL语句可能从数据库管理器返回Null
  • 31.尽量减少执行打开和关闭游标的次数
  • 32.SQL中要避免非逻辑
  • 33.使用关联ID来保证更好的可读性
  • 34.保证表和索引文件合法而且有组织
  • 35.充分利用Update Where Current of Cursor和Delete Where Current of Cursor
  • 36.使用游标时,利用多行获取、多行更新和多行插入来使用ROWSET定位和获取
  • 37.了解锁定隔离级别
  • 38.了解Null处理
  • 39.编程时要考虑性能
  • 40.让SQL来处理
  • 41.使用Lock Table
  • 42.考虑OLTP前端处理
  • 43.考虑使用动态可滚动游标
  • 44.利用物化查询表改善响应时间(只适用动态SQL)
  • 45.结合Select的Insert
  • 46.充分利用多行获取
  • 47.充分利用多行插入
  • 48.充分利用多行更新
  • 49.充分利用多行删除
  • 50.在Select子句中使用标量全选
  • 51.在动态SQL中充分利用REOPT ONCE和REOPT AUTO,在静态SQL中充分利用REOPT VARS和REOPT ALWAYS
  • 52.标识易失表
  • 53.使用ON COMMIT DROP改进
  • 54.使用多个Distinct
  • 55.充分利用反向索引扫描
  • 56.当心Like语句
  • 57.正确地设置聚簇索引
  • 58.必要时使用Group By表达式
  • 59.当心表空间扫描
  • 60.不要问你已经知道的信息
  • 61.注意查询中的表顺序
  • 62.使用左外联接而不是右外联接
  • 63.检查不存在的行
  • 64.使用存储过程
  • 65.不要只是为了排序而选择某一列
  • 66.尽可能限制结果集
  • 67.批量删除时充分利用DB2 V8的改进DISCARD功能
  • 68.充分利用DB2 LOAD工具完成批量插入
  • 69.注意视图、嵌套表表达式和公共表表达式的物化
  • 70.考虑压缩数据
  • 71.考虑并行性
  • 72.让STDDEV、STDDEV_SAMP、VAR和VAR_SAMP函数远离其他函数
  • 73.考虑使用ROWID数据类型(V8)或RID函数(V9)直接访问行
  • 74.用真实统计和一定的数据测试查询以反映性能问题
  • 75.在WHERE子句中指定前导索引列
  • 76.尽可能使用WHERE而不是HAVING完成筛选
  • 77.尽可能考虑Index Only处理
  • 78.DB2 V9中表达式上的索引
  • 79.考虑DB2 V9 Truncate语句
  • 80.在子查询中使用DB2 V9 Fetch First和Order by
  • 81.利用DB2 V9乐观锁定
  • 82.使用DB2 V9 MERGE语句
  • 83.了解DB2 NOFOR预编译选项
  • 84.考虑Select Into中使用Order By
  • 85.尽量编写布尔项谓词
  • 86.编写传递闭包
  • 87.避免用Order By排序
  • 88.尽可能使用联接而不是子查询
  • 89.当心Case逻辑
  • 90.在Order By子句中充分利用函数
  • 91.了解你的DB2版本
  • 92.了解日期运算
  • 93.了解大容量插入选择
  • 94.了解Skip Locked Data(V9)避免锁定
  • 95.对输入流排序
  • 96.如果需要真正的唯一性,可以使用V8Generate_Unique函数
  • 97.了解声明临时表的新选项
  • 98.执行Get Diagnostics时需要注意
  • 99.适当地对In列表排序
  • 100.结合Select的Update和Delete(V9)
  • 101.只在必要时执行SQL语句
  • 102.充分利用内存中的表
  • 103.避开通用型SQL语句
  • 104.避免不必要的排序
  • 105.了解表达式和列函数
  • 106.结合使用谓词时要注意
  • 107.为搜索查询增加冗余谓词
  • 108.充分利用改进的动态缓存(V10)
  • 109.尝试当前提交来避免锁(V10)
  • 110.尝试使用系统时态表获取历史数据(V10)
  • 111.尝试使用业务时态表获取历史数据(V10)
  • 112.了解分级函数(V10)
  • 113.充分利用扩展指示符(V10)
  • 114.得到更大的时间戳精度(V10)
  • 115.尝试Index Includes(V10)
  • 116.使用With Return to Client(V10)
  • 第2章 DB2 SQL提示
  • 1.在SQL语句的最后使用Optimize for 1 Row语句
  • 2.为SQL查询增加A.PKEY=A.PKEY谓词,这里PKEY等于表的主键列
  • 3.更换索引选择
  • 4.改变表处理顺序
  • 5.使用分布式动态SQL
  • 第3章 SQL标准和原则
  • 面向COBOL开发人员
  • 面向所有SQL开发人员
  • 第4章 SQL程序走查
  • 第5章 检查存在性
  • 例1
  • 例2
  • 第6章 Runstats
  • 第7章 查询初始调优步骤
  • 附录A 谓词重写示例
  • 谓词重写:传递闭包
  • 附录B DB2 SQL术语
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

机械工业出版社有限公司

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。