发表于: DB/ES | 作者: | 日期: 2009/8/29 08:08
标签: ,

Oracle提供了大量索引选项。知道在给定条件下使用哪个选项对于一个应用程序的性能来说非常重要。一个错误的选择可能会引发死锁,并导致数据库性能急剧下降或进程终止。而如果做出正确的选择,则可以合理使用资源,使那些已经运行了几个小时甚至几天的进程在几分钟得以完成,这样会使您立刻成为一位英雄。这篇文章就将简单的讨论每个索引选项。主要有以下内容:

[1] 基本的索引概念
查询DBA_INDEXES视图可得到表中所有索引的列表,注意只能通过USER_INDEXES的方法来检索模式(schema)的索引。访问USER_IND_COLUMNS视图可得到一个给定表中被索引的特定列。

通过下面的语句可以查看所有的索引信息:

select * from user_indexes;

More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/8/29 08:08
标签:

含义解释:
1、rownum是oracle系统为从查询返回的行顺序分配的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数。
2、rownum不能以任何基表的名称作为前缀。
More …

评论关闭
发表于: lnmp | 作者: | 日期: 2009/8/28 08:08

1、trackback是什么?
track的英文释义为轨迹,back的英文释义为回调,拼接在一起就是trackback,同程序语言中的callback概念类似。很形象的说明了这种机制是反向的将独立blog串联成线进而编织成网的机制。trackback翻译成中文成了“引用通告”。

简单的说,就是如果你写的文章是根据其他人Blog中的文章而做出的延伸或评论,你可以通知对方你针对他的文章写了东西,这就需要用到引用通告。在以往我们的经验当中,您对他人日志文章的评论只能在他人文章后通过回复进行,这样做让我们只能在别人的地盘上活动,而不能自己掌握自己的发表的言论,这就带来一些麻烦。
More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/8/28 01:08
标签: ,

视图简介:
视图是基于一个表或多个表或视图的逻辑表,本身不包含数据,通过它可以对表里面的数据进行查询和修改。视图基于的表称为基表。视图是存储在数据字典里的一条select语句。 通过创建视图可以提取数据的逻辑上的集合或组合。

视图的优点:
1.对数据库的访问,因为视图可以有选择性的选取数据库里的一部分。
2.用户通过简单的查询可以从复杂查询中得到结果。
3.维护数据的独立性,试图可从多个表检索数据。
4.对于相同的数据可产生不同的视图。

视图的分类:
视图分为简单视图和复杂视图。

两者区别如下:
1.简单视图只从单表里获取数据,复杂视图从多表获取数据;
2.简单视图不包含函数和数据组,复杂视图包含;
3.简单视图可以实现DML操作,复杂视图不可以。
More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/8/27 12:08
标签: ,

连接概述
关系数据库中所有的数据均以明确的数据值存在于它的字段中,表之间所有可能的关系都是通过匹配相关字段的内容来形成的。连接提供了一个强大的工具来生成数据库中的数据关系。事实上,因为关系数据库不包含指针或其他关联记录与记录的机制,连接是生成跨表数据关系的唯一机制。

通过匹配相关字段的内容来形成一对一对的记录的过程称为连接表结果表(包含两个源表的数据)称为两表之间的一个连接。

连接的数学基础
连接是对两个表的数据进行更通用的组合的一种特殊情况。…待补充…
More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/8/27 09:08
标签: ,

来源:网络
作者:未知

首先作者给出了如下的sql查询语句执行顺序

(8) select (9) distinct (11)
(1) from
(3) join (2) on
(4) where
(5)group by
(6) with {cube|rollup}
(7)having(having_condition)
(10) order by

More …

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/8/20 02:08
标签:

date字段上建立了索引,但是sql语句中使用的where条件如下:

WHERE to_char(start_time,’yyyy-mm-hh hh24:mi:ss’) > ‘2009-08-01 00:00:00′ AND to_char(start_time,’yyyy-mm-hh hh24:mi:ss’) < '2009-08-31 23:59:59';

因为使用了to_char函数,造成了索引没有使用。正确的写法如下:

WHERE start_time > to_date(‘2009-08-01 00:00:00′ ,’yyyy-mm-hh hh24:mi:ss’) AND start_time < to_date('2009-08-31 23:59:59', ,'yyyy-mm-hh hh24:mi:ss');


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以下内容引自itpub论坛:

问题:

环境:AIX 4.3.3,oracle9.2RAC,表mytab共有数据15万条左右上。
在日期型字段(mydate)上建了一个索引(create index idx1 on mytab(mydate)),
可是SQL(select mydate from mytab where to_char(mydate,’yyyymmdd’)=’20040310’)根本不使用这个索引。
后来在该字段上建了一个函数索引:to_char(mydate,’yyyymmdd’)之后,该sql可以使用这个索引了,但是一旦加上order by mydate(select mydate from mytab where to_char(mydate,’yyyymmdd’)=’20040310′ order by mydate)之后,oracle又不使用索引了。真是非常困惑。
把数据倒到Redhat AS3+oracle10上,现象也很费解。建索引:create index idx1 on mytab(to_char(mydate,’yyyymmdd’)),SQL(select mydate from mytab where to_char(mydate,’yyyymmdd’)=’20040310’)和SQL(select mydate from mytab where to_char(mydate,’yyyymmdd’)=’20040310′ order by mydate)都能使用该索引。
那位大虾能解释上述现象啊?

答复:
我觉得你用to_char转换索引字段不可取
where to_char(mydate,’yyyymmdd’)=’20040310’)
可以转换
where mydate >= to_date(‘20040310′,’yyyymmdd’)
and mydate < to_date('20040311','yyyymmdd') 原帖地址:http://www.itpub.net/thread-208701-1-1.html

评论关闭
发表于: java/j2ee | 作者: | 日期: 2009/8/16 12:08

我们在编程实践中经常会需要进行数组的复制,不但要复制数组的基本结构,还要复制其中的数据,遇到这种情况该怎么处理呢?不用愁,java给我们提供了一个System.arraycopy() 方法来解决这个问题。 More …

评论关闭
发表于: sitebuild | 作者: | 日期: 2009/8/13 07:08

选择风险
近期我们在产品前台重构中引入了RIA特性。虽然Ajax比其他RIA技术对于开发人员技术水平的要求较高,开发代价更大,但由于产品特性需要我们仍然采用了Ajax技术,并在众多框架中选择了Prototype(1.5.1)和Ext(1.0.1a)组合。在企业级应用开发中做出这样的抉择是需要承担一定的风险的。

如期而至的问题
不出所料,重构工作开展不过两个星期,客户端浏览器的性能问题便凸现出来,使重构进程陷入僵持状态。暂时撇开客户端代码运行速度不说,IE(6 sp2)和Fx(2.0.0.4)浏览器出现了不同程度的JavaScript内存泄露,使得客户端浏览器在浏览系统页面一段时间后会消耗大量客户端资源以至浏览器的浏览速度低下甚至瘫痪。使框架问题还是我们编写的客户端代码存在问题呢?我们首先带着这个问题展开了一系列的测试。

经过初步观察,在系统主界面中每打开一个包含了Ext.Grid(以下简称grid)控件的Ext.TabPanelItem(以下简称tab),浏览器(IE、Fx)占用的内存资源就会飙升1-4M,且关闭Ext.TabPanelItem后内存并不会被回收。如此,每次开启10个Ext.TabPanleItem再将之关闭,反复数次之后,浏览器所占用的资源已经高达数百兆。浏览器内存占用提高的问题暂不考虑,因为tab中嵌入了iframe(由于系统页面结构的特殊性和接口问题,没有利用ajax请求向tab中装载页面内容),而iframe中的页面加载了Prototype和Ext的js文件(总共大约600K),假设框架加载需要分配1-4M的内存空间也是合理的。但关闭tab后内存不被回收,且开启新tab时浏览器内存占用继续增长,则可以肯定地判断为内存泄露。是何种原因导致了内存泄露呢?

IE/Fx的bug,iframe惹祸
经过进一步的观察,我们发现IE和Fx的内存泄露现象存在着差异,而浏览器瘫痪的时机也有着很大不同。

具体表现如下:

IE:每开启一个tab,IE的内存占用量即提高1-4M。关闭tab,内存占用量不会下降。继续操作,直至浏览器瘫痪,内存占用量仍不下降。

Fx:每开启一个tab,Fx的内存占用量提高1-4M。关闭tab,内存占用量不会下降。但连续关闭几个tab后,浏览器陷入假死状态,cpu占用率达到50%,数秒后恢复正常。tab全部关闭后,继续操作,随着tab的添加Fx的内存占用量又逐渐增加。

解决办法
综上,可以得到这样的结论,IE下确实存在着内存泄露问题,而Fx下并非内存泄露导致浏览器假死。

随后,我在Ext的官方网站论坛上找到了关于iframe与tab混用时会发生Memory leak的帖子。Ext核心开发人员Jack的回答是,TabPanelItem在关闭时并不会对自定义到tab中的元素做特殊处理,这部分工作必须在控件外来完成。另一方面,相关资料称IE在iframe元素的回收方面存在着bug,在通常情况下应该将该元素的src属性值修改为”abort:blank”,并手工将其从DOM树上移除,然后把脚本中引用它的变量置空并调用CollectGarbage()就可以避免iframe不能正常回收所造成的内存泄露。

按照上述方法,在tab的close事件中添加了iframe的销毁代码,IE的内存泄露问题得以解决。

但是,Fx的问题仍然无法得到解决,即关闭tab后CPU占用率激增并持续数秒。无奈之下我测试了Linux下的Firefox以及Windows版本的Firefox 3 alpha,并未出现此问题。初步断定,着个问题应该是Firefox 2.0.0.4在DOM元素回收性能方面的BUG。至于在Fx下关闭tab并不会立即释放内存也得到了官方解释,Fx会缓存一部分页面数据在内存中,以得到较好的性能。

“至尊”级浏览器,Safari
此前我对苹果发布的windows版本Safai3还持有不屑一顾的态度,因为他们的发言人实在太过狂妄的发言,自称Safari是世界上最好的浏览器,未把任何浏览器放在眼里。我一向不喜欢自吹的人,却又对他们发言人的狂言感觉好奇,另一方面希望测试一下产品的跨浏览器能力,便索性下载了Safari 3 for windows。结果令我瞠目结舌,Safari处理JavaScript的速度绝非IE和Fx(包括他们的最新版本IE7和Fx3 alpha)所能及,绝对可以堪称一流的页面渲染能力。为程序员说句心里话,如果所有浏览器的页面渲染速度能达到Safari的水准,我们在AJAX RIA应用构建上将有更大的发挥空间。我着实为Safari带来的RIA极速浏览体验快感兴奋了一把。不夸张地说,Safari至少可以算个浏览器的准至尊吧。

Ext的js包使用注意事项
在通常情况下,使用ext-all.js就可以了,但是当一个页面需要包含多个iframe,且iframe的资源指向需要使用Ext的页面时,被嵌入的页面尽量不要使用Ext-all.js了,而是使用ext-core.js并从Ext的package目录中加载你所需要的js包。除非你确定你的客户使用Safari或者Fx3来浏览,否则性能会大打折扣。

作者:冰咖啡
from:http://icedcoffee.blogbus.com/logs/6489320.html


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

文章所提到的iframe内存回收的方案下文给出了一个完整参考:

项目中用到一个IFRAME做页面跳转前的处理,运行时发现每次通过IFRAME并关闭页面后,IE的内存会增加3M左右,调查发现是IFRAME没有释放掉,所以对代码做了修改:




作者:gaohades
from:http://www.cnblogs.com/gaohades/archive/2009/07/24/1415811.html

评论关闭
发表于: DB/ES | 作者: | 日期: 2009/8/13 06:08

sign函数语法:
sign(n)

sign函数说明:
取数字n的符号,大于0返回1,小于0返回-1,等于0返回0

示例:
select sign( 100 ),sign(- 100 ),sign( 0 ) from dual;

SIGN(100) SIGN(-100) SIGN(0)
———- ———- ———-
1 -1 0


暂时还没有用过,先收藏一下。

评论关闭