6、指定FOR FETCH ONLY子句
如果不想更新那些由SELECT语句提取的行,我们可以在SELECT语句中指定FOR FETCH ONLY子句,这么做的好处是,处理应用程序提出的查询请求时可以充分利用行的分块技术,进而改善性能;该子句还能改善数据的并发性,因为使用该子句查询的那些行上不再有独占的锁了。除了FOR FETCH ONLY子句,我们还可以使用FOR READ ONLY子句,二者是同义词,功效一致。
7、避免数据类型转换
我们应尽可能地避免数据类型的转换,特别是数字的数据类型之间的转换。当比较两个值时,使用具有相同数据类型的项目进行比较效率会更高。例如,有两张表:A和B,使用A的A1列和B的B1列进行两表间的连接操作,如下所示:
SELECT * FROM A,B WHERE A1=B1 |
如果列A1和B1的数据类型一致,则无需进行数据类型转换;如果不一致,那么,应用程序就会在运行时进行数据类型的转换以比较二者的数值大小,从而影响应用程序的性能。例如,如果A1列的数据类型是decimal,而B1是integer,并且都有一个数值“123”,那么这时就需要进行数据类型转换了,因为表A将“123”存储为“123C”(十六进制表示),而表B存储为“7B”(十六进制表示)。
再者,进行数据类型转换时,由于计算精度的限制,可能会导致错误的发生。
DB2 UDB提供许多数据类型,其中,有用于数字数据的SMALLINT,INTEGER,BIGINT,DECIMAL,REAL,DOUBLE;有用于字符数据的CHAR,VARCHAR,LONG VARCHAR,CLOB;也有用于双字节字符数据的GRAPHIC,VARGRAPHIC,LONG VARGRAPHIC和DBCLOB,等等。由于数据库的存储容量和各种变量的处理成本都取决于数据类型,所以,我们在编程时如何选择适当的数据类型就显得十分重要,以下是选择数据类型时应该遵循的一些准则:
● 对于比较短的列,尽量使用定长的CHAR而不是变长的VARCHAR。虽然,当数据的长度参差不齐时,VARCHAR可以节省数据库存储空间,但是系统需要花费额外的开销去检查每个数据的长度。
● 尽量使用VARCHAR或VARGRAPHIC而不是LONG VARCHAR或LONG VARGRAPHIC。VARCHAR列和LONG VARCHAR列的最大长度差不多,基本一致,VARCHAR列的最大长度是32672字节,LONG VARCHAR列的最大长度是32700字节;同样地,VARGRAPHIC列和LONG VARGRAPHIC列的最大长度也相仿,VARGRAPHIC是16336字节,LONG VARGRAPHIC是16350字节。对于LONG VARCHAR列和LONG VARGRAPHIC列有一些限制,比如,这两列中的数据不能存储在数据库缓冲池中。
● 如果不需要小数部分,则尽量使用整数(SMALLINT,INTEGER,BIGINT)而不是浮点数(REAL或DOUBLE)或十进制数(DECIMAL)。比较而言,整数的处理成本要廉价得多。
● 尽量使用日期--时间(DATE,TIME,TIMESTAMP)而不是字符(CHAR)。日期--时间数据类型会占用较少的数据库存储空间,而且,对于日期--时间数据类型的变量,我们还可以利用系统提供的一些内置函数(如YEAR,MONTH)对其进行计算、转换等处理,一般来说,内置函数要比我们手工编写的函数在性能、效率上都要高一些。
● 尽量使用数字的数据类型而不是字符的数据类型。
凡事都是一分为二,有利有弊的,我们不能既想节省数据库的存储空间,又希望降低应用程序的处理成本,二者只能取其一,不可兼得,这就要求我们在编程时不能仅局限于一点,应该通盘考虑整个应用程序的设计,综合评估,权衡利弊,以求应用程序的性能更优。
结束语
一谈起数据库性能调整、优化,我们脑海中往往就会有这样的概念:优化是系统维护时做的事情,属于后期制作。其实不然,早在编程时就已经存在性能优化的问题了。本文就编写SQL语句时应该注意的一些问题阐述一下笔者的观点,不当之处还请大家批评指正。
分享到:
相关推荐
### DB2数据库SQL语句大全 #### 1. 强制关闭所有应用程序 ```sql db2forceapplicationall ``` 此命令用于强制关闭所有正在运行的应用程序,确保在进行维护操作之前所有的应用程序都已关闭。 #### 2. 在线备份...
在现代数据库管理系统(DBMS)中,SQL语句的性能优化对于提高整体应用程序的响应速度和资源利用率至关重要。IBM DB2 Universal Database (UDB) 作为一款成熟且功能强大的数据库产品,提供了多种工具帮助用户监控和分析...
本文将深入探讨DB2数据库中的SQL注入语句,以及如何通过这些语句来猜解数据库结构和数据。 首先,SQL注入的基础原理是通过在合法的SQL查询语句中嵌入恶意代码,以改变原本的查询逻辑。在给定的示例中,攻击者试图猜...
3. **SQL Monitor监控**:利用DB2的SQL Monitor功能,可以实时监控SQL语句的执行情况,及时发现并解决性能瓶颈。 #### 二、索引策略与优化 索引对于提高SQL查询性能至关重要。合理设计和维护索引可以显著加快查询...
### DB2数据库性能优化小技巧详解 #### 一、Bufferpool优化 在DB2数据库中,Bufferpool(缓冲池)的设置对整个系统的性能有着重要的影响。合理的Bufferpool配置能够显著提升数据访问速度,减少I/O操作次数。下面将...
预编译是指对SQL语句进行语法检查和优化的过程,绑定是指将SQL语句与DB2数据库进行绑定的过程,编译是指将预编译后的SQL语句转换为机器代码的过程。 在DB2嵌入式SQL应用程序的开发中,开发人员还需要了解DB2数据库...
1. 版本信息:可以使用以下SQL语句来获取DB2数据库的版本信息: ```sql SELECT versionnumber, version_timestamp FROM sysibm.sysversions; ``` 2. 当前用户:可以使用以下SQL语句来获取当前用户信息: ```sql ...
### DB2中常用SQL语句知识点详述 #### 数据库简介 DB2是IBM公司推出的一款关系型数据库管理系统,广泛应用于各种规模的企业级环境中。为了更高效地管理和操作数据库,掌握常用的SQL语句是非常必要的。SQL...
深刻理解DB2的锁及并发机制、索引原理、数据库参数、优化器原理、SQL语句调优等内部机理才能针对性地快速提出解决问题的方法;快照、db2pd、db2expln及事件监控器等则是必须熟练掌握的工具。《DB2数据库性能调整和...
任何应用程序对数据库的操作最终都会转化为SQL语句。因此,SQL语句的执行效率直接影响到数据库系统的整体性能。据估计,SQL语句可能消耗掉数据库70%至90%的资源。不同的SQL语句写法可能会导致显著的性能差异。由于大...
SQL语句是应用程序与数据库之间交互的主要方式,其性能直接影响到整体应用的响应速度及数据库服务器的负载。根据统计,SQL语句可能消耗掉数据库70%至90%的资源,因此优化SQL不仅能够提升执行效率,还能显著减轻...
### DB2优化器详解:DB2数据库性能调整与优化的核心 #### 一、DB2优化器:数据库性能的指挥官 DB2优化器是IBM DB2数据库管理系统中的关键组件,负责决定如何高效地执行SQL查询和其他数据库操作。其核心职责是在...
结合具体的业务场景,通过监控SQL执行,我们可以制定相应的性能优化策略,如调整数据库参数、优化存储过程、重构SQL语句等,实现DB2性能的持续改进。 总的来说,通过对DB2中的SQL执行进行监控,我们可以全面了解...
在DB2 V9版本中,为了更好地管理和优化数据库性能,特别是针对那些消耗大量CPU资源的SQL语句进行分析和优化是非常重要的。本篇文章将详细介绍如何通过DB2 V9的管理视图来查找消耗CPU资源较多的SQL语句。 #### 目标 ...
本文档《sql性能优化十大要素》详细介绍了在DB2环境下,如何优化SQL语句的性能。文档作者是Sheryl M. Larsen,通过十条具体建议来实现SQL的高效执行,这些要素对于数据库管理员(DBA)、开发人员,以及任何使用关系...
标题与描述均聚焦于SQL Server, Oracle, 和DB2数据库中的SQL语句比较,这是一个对IT专业人士特别是数据库管理员(DBA)、开发人员以及对数据库技术感兴趣的人来说极为实用的主题。以下是对给定文件中提及的关键知识点...
- **执行时间统计**:每个SQL语句执行完毕后,系统会自动记录并显示其执行时间,帮助用户快速了解每条SQL语句的性能表现。 **2. 受影响记录数统计** - 对于更新、插入或删除操作,工具会报告受影响的记录数。 - ...
4. **SQL优化**:DB2的查询优化器在执行SQL语句时会选择最优的执行计划。SQL语句的语法分析、查询重写和计划优化是其中的关键步骤。查询重写可以消除DISTINCT、视图合并、子查询到连接的变换,以及共享聚集操作,以...