- 浏览: 1076605 次
- 性别:
- 来自: 武汉
最新评论
-
flyfeifei66:
list<bean> bean 中有 list&l ...
freemarker中的list -
BelloVersion:
第五种错误Remote host closed connect ...
客户端如何使用httpclient向https服务器发送数据 -
willxue:
看了半天 前面说的是错的?。。。
反向键索引的原理和用途 -
liulanghan110:
quainter 写道麻烦博主,参数为数组时,paramete ...
MYBATIS 的parameter -
quainter:
麻烦博主,参数为数组时,parameterType怎么写啊?
MYBATIS 的parameter
文章列表
SQL
什么条件会使用索引?
当字段上建有索引时,通常以下情况会使用索引:
INDEX_COLUMN = ? (
或者
>
、
>=
、
<
、
<=)
INDEX_COLUMN between ? and ?
INDEX_COLUMN in (?,?,...,?)
INDEX_COLUMN like ?||'%'
(后导模糊查询)
T1. INDEX_COLUMN=T2. COLUM
数据库索引的原理非常简单,但在复杂的表中真正能正确使用索引的人很少,即使是专业的DBA
也不一定能完全做到最优。
索引会大大增加表记录的DML(INSERT,UPDATE,DELETE)
开销,正确的索引可以让性能提升100
,1000
倍以上,不合理的索引也可能会让性能下降100
倍,因此在一个表中创建什么样的索引需要平衡各种业务需求。
索引有哪些种类?
常见的索引有B-TREE
索引、位图索引、全文索引,位图索引一般用于数据仓库应用,全文索引由于使用较少,这里不深入介绍。B-TREE
索引包括很多扩展类型,如组合索引、反向索引、函数索引等等,以 ...
排序操作一般都是在内存里进行的,对于数据库来说是一种
CPU
的消耗,曾在
PC
机做过测试,单核普通
CPU
在
1
秒钟可以完成
100
万条记录的全内存排序操作,所以说由于现在
CPU
的性能增强,对于普通的几十条或上百条记录排序对系统的影响也不会很大。但是当你的记录集增加到上万条以上时,你需要注意是否一定要这么做了,大记录集排序不仅增加了
CPU
开销,而且可能会由于内存不足发生硬盘排序的现象,当发生硬盘排序时性能会急剧下降,这种需求需要与
DBA
沟通再决定,取决于你的需求和数据,所以只有你自己最清楚,而不要被别人说排序很 ...
要正确的优化
SQL
,我们需要快速定位能性的瓶颈点,也就是说快速找到我们
SQL
主要的开销在哪里?而大多数情况性能最慢的设备会是瓶颈点,如下载时网络速度可能会是瓶颈点,本地复制文件时硬盘可能会是瓶颈点,为什么这些一般的工作我们能快速确认瓶颈点呢,因为我们对这些慢速设备的性能数据有一些基本的认识,如网络带宽是
2Mbps
,硬盘是每分钟
7200
转等等。因此,为了快速找到
SQL
的性能瓶颈点,我们也需要了解我们计算机系统的硬件基本性能指标,下图展示的当前主流计算机性能指标数据。
从图上可以看到基本上每种 ...
具体解决方法是: 1,修改远程linux机器的配置 vim /etc/sysconfig/i18n 把LANG改成支持UTF-8的字符集 如: LANG=”zh_CN.UTF-8″ 或者是 LANG=”en_US.UTF-8″ 2,然后再改Secure CRT的设置 中文版:选项->会话选项->外观->字符编码->uft-8 英文版:Options-Session Options --Appearance--Character--UTF-8
注意会话选项要在连接目标主机后才能设置的3,退出,再重新登录。发现utf8的文件都能正确读了,utf8的文件名也能正确显示了
...
在创建存储过程语句中提供必要的参数
创建存储过程语句(CREATE PROCEDURE)可以包含很多参数,虽然从语法角度讲它们不是必须的,但是在创建存储过程时提供它们可以提高执行效率。下面是一些常用的参数
容许 SQL (allowed-SQL)
容许 SQL (allowed-SQL)子句的值指定了存储过程是否会使用 SQL 语句,如果使用,其类型如何。它的可能值如下所示:
NO SQL: 表示存储过程不能够执行任何 SQL 语句。
全局变量
ROW_COUNT—影响行数
RETURN_STATUS--返回状态
SQLSTATE—SQL返回错误代码
注: DB2下SQLCODE,SQLSTATE不能直接使用,必须声明后使用,也就是说将系统的SQLCODE,SQLSTATE本地实例化一分拷贝。
常用函数
空值处理
with return to caller 选项指定将来自游标的结果返回给调用者,后者可以是另一个过程或者客户机应用程序,这是默认选项
with return to client 选项指定将来自游标的结果返回给客户机应用程序,绕过中间的任何过程.
子存储过程:
create procedure Test(
out v_message varchar(500)
)
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
--异常处理
游标一般用来迭代结果集中的行
为了在一个过程中处理一个游标的结果,需要做以下事情:
在存储过程块的开头部分 DECLARE 游标。
打开该游标。
将游标的结果取出到之前已声明的本地变量中(隐式游标处理除外,在下面的 FOR 语句中将对此加以解释)。
关闭该游标。(注意:如果现在不关闭游标,当过程终止时将隐式地关闭游标)。
在
DB2
存储过程开发中经常使用临时表。合理的使用临时表可以简化程序的编写,提供执行效率,然而滥用临时表同样也会使得程序运行效率降低。
临时表一般在如下情况下使用:
临时表用于存储程序运行中的临时数据。例如,如果在一个程序中第一条查询语句执行的结果会被后续的查询语句用到,那么我们可以把第一次查询的结果存储在一个临时表中供后续查询语句使用,而不是在后续查询语句中重新查询一次。如果第一条查询语句非常复杂和耗时,那么上面的策略是非常有效的。
临时表可以用于存储在一个程序中需要返回多次的结果集。例如,程序中有一个很耗资源的多表查询,同时,该查询在程序中需要执行多次,那 ...
在存储过程执行的过程中,经常因为数据或者其他问题产生异常(condition)。根据业务逻辑,存储过程应该对异常进行相应处理或直接返回给调用者。此处暂且将condition译为异常以方便读者理解。实际上有些异常(condition)并非是由于错误引起的,下面将详细讲述。
当存储过程中的语句返回的SQLSTATE值超过00000的时候,就表明在存储过程中产生了一个异常(condition),它表示出现了错误、数据没有找到或者出现了警告。为了响应和处理存储过程中出现的异常,我们必须在存储过程体中声明异常处理器(condition handler),它可以决定存储过程怎样响应一个或者多个已定义的异常 ...
条件语句
if语句:
if 条件 then
执行语句;
else
执行语句;
end if;
如下面的存储过程:
create procedure Test(
OUT v_message varchar
DB2 SQL Procedural Language(SQL PL)是 SQL Persistent Stored Module 语言标准的一个子集。该标准结合了 SQL 访问数据的方便性和编程语言的流控制。通过 SQL PL 当前的语句集合和语言特性,可以用 SQL 开发综合的、高级的程序,例如函数、存储过程和触发器。这样便可以将业务逻辑封装到易于维护的数据库对象中,从而提高数据库应用程序的性能。
SQL过程和SQL 函数是使用不同技术实现的。SQL 过程中的查询是单独编译的,每个查询都成为包中的一个节。编译是在过程创建时进行的,直到重新创建过程或者直到重新绑定其相关的包时才重新编译这些查 ...
DB2 Universal Database(DB2 UDB)用户定义函数(user-defined functions,UDF)允许您添加自己的函数定义,从而扩展 DB2 的内置函数。有了这些用户定义函数,就可以通过编写自己的用于事务、计算等方面的函数来定制 DB2,以满足业务需求。
UDF 鼓励代码重用,这样可以提高应用程序开发人员的生产率。如果您有很多实现相同逻辑的程序,那么可以通过 UDF 标准化该逻辑,并让所有这些程序使用相同的实现。一旦在 DB2 中定义好一个 UDF,便可以像使用内置 DB2 函数那样,在 SQL 语句中使用这个 UDF。如果是在应用程序中编写这个函数,而不是将其 ...
变量声明
变量声明采用DECLARE 关键字,如下声明一个整型变量:
DECLARE v_num;
如需要声明变量时给变量一个默认值,可以这样写:
DECLARE v_num int default 0;
变量赋值