SQL
SQL
SQL
SQL
语言艺术
内容介绍
本书分为 12 章,每一章包含许多原则或准则,并通过举例的方式对原则进行解释说明。这些例
子大多来自于实际案例,对九种 SQL 经典查询场景以及其性能影响讨论,非常便于实践,为你
的实际工作提出了具体建议。本书适合 SQL 数据库开发者、软件架构师,也适合 DBA ,尤其是
数据库应用维护人员阅读。
资深 SQL 专家 St é phane Faroult 倾力打造
《软件架构设计》作者温昱最新译作
巧妙借鉴《孙子兵法》的智慧结晶
传授 25 年的 SQL 性能与调校经验
深入探讨九种常见查询方案及其性能
前言
过去, “ 信息技术( IT ) ” 的名字还不如今天这般耀眼,被称为 “ 电子数据处理 ” 。其实,尽管当
今新潮技术层出不穷,数据处理依然处于我们系统的核心地位,而且需管理的数据量的增长速
度似乎比处理器的增长速度还快。今天,最重要的集团数据都被保存在数据库中,通过 SQL 语
言来访问。 SQL 语言虽有缺点,但非常流行,它从 1980 年代早期开始被广泛接受,随后就所向
无敌了。
如今,年轻开发者在接受面试时,没有谁不宣称自己能熟练应用 SQL 的。 SQL 作为数据库访问
语言,已成为任何基础 IT 课程的必备部分。开发者宣传自己熟练掌握 SQL ,其实前提是 “ 熟练 掌
握 ” 的定义是 “ 能够获得功能上正确的结果 ” 。然而,全世界的企业如今都面临数据量的爆炸式 增
长,所以仅做到 “ 功能正确 ” 是不够的,还必须足够快,所以数据库性能成了许多公司头疼的问
题。有趣的是,尽管每个人都认可性能问题源自代码,但普遍接受的事实则是开发者的首要关
注点应该是功能正确。人们认为:为了便于维护,代码中的数据库访问部分应该尽量简单; “ 拙
劣的 SQL ” 应该交给资深的 DBA 去摆弄,他们还会调整几个 “ 有魔力 ” 的数据库参数,于是速度 就
快了 —— 如果数据库还不够快,似乎就该升级硬件了。
往往就是这样,那些所谓的 “ 常识 ” 和 “ 可靠方法 ” 最终却是极端有害的。先写低效的代码、后由
专家调优,这种做法实际上是自找麻烦。本书认为,首先要关注性能的就是开发者,而且 SQL
问题绝不仅仅只包含正确编写几个查询这么简单。开发者角度看到的性能问题和 DBA 从调优角
度看到的大相径庭。对 DBA 而言,他尽量从现有的硬件(如处理器和存储子系统)和特定版本
的 DBMS 获得最高性能, 他可能有些 SQL 技能并能调优一个性能极差的 SQL 语句。 但对开发者 而
言,他编写的代码可能要运行 5 到 10 年,这些代码将经历一代代的硬件,以及 DBMS 各种 重要 版