欢迎来到天天文库
浏览记录
ID:31632628
大小:71.84 KB
页数:15页
时间:2019-01-16
《sql语句优化原则》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、SQL语句优化原则数据库性能是整个应用程序性能的重要部分。数据库优化涉及的内容非常广泛,各类数据库都提供众多的性能指标和大量的优化工具。下面我们简单介绍一下优化的基本概念。一个运行良好的数据库至少应具有以下特点:合理的物理结构及硬件能力合理的物理结构指数据库文件及整个网络的物理分布。硕件能力指是否有足够的硕件资源来完成应用程序功能。合理的物理结构至少带来两个方面的好处:1、适量的数据冗余,提高数据安全性。2、平衡磁盘10,增强数据读写能力。而足够的硬件能力的作用口然不言而喻。一旦建立好数据库系统并开始运行
2、,数据库的物理结构就不能改变。合理的系统参数对应数据库来说,随着数据量的变化,数据库性能也一直处在变化之中,因此数据库建立之初设定的系统参数会变的越來越不合适,有时甚至阻碍了数据库的正常运行,导致性能瓶颈。因此观察性能变化,随时调整系统参数,使数据库一直处于一个良好的运行状态,就成为管理员最重要的FI常工作Z-o对系统参数的合理调整,常常能将数据库从崩溃的边缘挽救回来。oracle,sqlserver这样的高品质数据库都为系统参数提供了灵活多变的调整方式。一般来说,只要数据库结构设计不存在重大缺陷,通过后
3、期的调整,都可以使数据库运行在一个良好的状态下。性能优良的sql语句sql语句是在程序开发阶段就已经决定了的,由低效率的sql语句给数据库性能带来的问题,往往在数据库开始运行一段时间后才凸现岀来(随着数据量的不断增加),但发现后就变的难以改变,成为不可突破的性能瓶颈。因此,作为一名合格的开发人员,应该建立基本的优化概念和良好的编程习惯,从整体上提高应用程序的质量。同时,提高sql语句的执行效率,是提高整个数据库性能的最立竿见影且价格低廉的方法之一。因为几乎所有的数据库都会不可避免的运行一些效率低下的sql
4、语句。对数据库性能的调整,往往都是从sql语句调优开始的。下面我们简单介绍数据库是怎么执行sql语句的。Sql语句是唯一从应用程序发送到数据库实例的命令。数据库实例所做的全部工作就是接受、解释和执行sql语句。在绝大多数情况下,我们并不需要关心sql语句是怎么执行的,这是因为在当前流行的数据库软件中都无一例外的采用了高性能的优化器,而这些优化器在绝大多数的情况下都能将用户某些不合理的sql语句结构转换成更合理的形式,从而有效提髙sql的执行效率。优化器的优化原理有两种:基于成本的优化对一条sql语句,优化
5、器会生成所有可能的执行方式,估计这些执行方式将使用的硬件成本,相互比较后从中选择成本最低的执行计划。缺点是必须收集大量统计数据,对服务器造成额外的负担。基于规则的优化相对基于成本的优化,基于规则的优化则显得死板的多。比如sqlserver遇到blog_id二*的情况就会去找索引,实在找不到索引才使用全表扫描。而不考虑有吋候不用索引可能效率更高。显然有些情况下基于规则的优化并不合适。/*执行计划的概念:简单的说执行计划就是指在执行sql语句前对代码进行编译时数据库实例为sql选择的执行路径。如一个sql对A
6、、B、C三个表进行联合查询,数据库会首先以某种方式对这3个表种符合条件的记录进行查询(全表扫描或其他),再将A、B、C表中符合条件的记录读入内存,将A、B表的记录相比较后得出的结果集与C表相比较,最后得到符合的结果集。但实际情况比这复杂的多。*/oracle可以选择两种优化模式之中的一种,而其他数据库则是固定的(DB2不清楚,关于DB2的资料太少了),基本都是基于规则的优化。然而优化器毕竟不是智能的。很多时候,它不可避免的受到sql语句结构的彫响。而SQL优化的实质就是在结果正确的前提下,用优化器可以识别
7、的语句,充份利用索引,减少表扫描的I/O次数,尽量避免表扫描的发生。sql的书写原则以下介绍的标准sql的书写原则是本文的核心,这些原则适用于绝大部分数据库。介绍这些原则的时候,我会举一些简单的例子来说明,但这些例子在实际生产屮可能没有什么实际意义。1、使用索引如果没有任何索引,在执行sql语句时必定将做全表扫描。这和我们在看一本书吋,如果没有目录,我们只能从笫一页开始查找,直到找到查询的内容是一个道理。全表扫描是效率最低的查询方式,我们会看到绝大多数的低效率sql就是使用的全表扫描。因此在对一些大表进行
8、查询的时候,我们需要关心一下表中是否建立了索引并尽量使用索引。总的来说索引可以分为聚集索引和非聚集索引。一个表中只能有一个聚集索引。对一个表建立一个聚集索引后,数据库会调整表记录的顺序,使表按照索引的顺序重新排列。而非聚集索引则不会改变表的结构。使用的最常见的索引就是主键索引。实际上在表中指定一列为主键的时候,就在这列上建立了唯一值索引并强制该列的值唯一,这就成了主键索引。在下面几种情况下,应该建立索引:1.有大量重复值、且经
此文档下载收益归作者所有