摘要: 前一阵子一直在研究着Oracle的表分区的相关知识。在数据量不断扩大的现在,分区技术是一种非常有效的提高效率的技术。 限于业务的原因,我以前每次建立分区表的时候都喜欢用日期进行分区,每天一个range分区。但是突然有一天我遇到了一个很讨厌的表,是一个对应关系表,只有产品和销售品的对应关系,这个样子的表是没有办法建立我最熟悉的range分区的,经过我查阅资料以后我发现hash分区是一个比较好的解决方案。 hash分区就是对分区字段进行hash运算后,将数据均匀的分布在每一个分区上。hash,在大学的时候数据结构课上学过,意思是杂凑,听这个名字就知道这个方法无比适合。 新学的分区语句: ... 阅读全文
posted @ 2012-09-28 19:28 wingsless 阅读(2267) 评论(6) 推荐(3) 编辑
摘要: 昨天写了一下关于Oracle表压缩的问题(http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html),由于时间原因没有具体的实验,只是使用了网上的资料,但是这并不是我的风格,因为网上资料直接拿来转载的多,自己原创的少。所谓事必躬 阅读全文
posted @ 2012-09-24 21:52 wingsless 阅读(1886) 评论(0) 推荐(0) 编辑
摘要: 这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有500多万的数据。一个月按照4周计算,就要有2000万条数据。而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间 阅读全文
posted @ 2012-09-23 22:35 wingsless 阅读(2254) 评论(3) 推荐(0) 编辑
摘要: 据以前的同事说这个数据库很快,比Oracle快。我希望做一个测试。 测试的内容非常简单,同一个表结构,同样多的数据,做几次count,比一比平均时间。 首先是表结构,有三个字段,month_id,password,user_no,分别是varchar,varchar,number类型。数据量30207104条。不算大,但是也绝不小,对于我这种PC机来说,已经挺可观了。 首先是PostgreSQL。直接看结果: 11秒,速度不错。 再看看Oracle: 14秒,有点让我失望了。 尽管对比效率应该是查看的执行计划的,但是由于这是两个不同的数据库,所以执行计划的可比性不是非常大,所以就用这个土办法. 阅读全文
posted @ 2012-08-18 15:10 wingsless 阅读(2043) 评论(14) 推荐(1) 编辑
摘要: 前一阵子写了一点有关分区表的东西(http://www.cnblogs.com/wingsless/archive/2012/02/11/2347111.html)。我们的项目限于甲方的抠门,分配给我们的磁盘空间相当的小,因此我们的项目中并不习惯使用索引这个好用的东西,因为索引也是要耗用很大的空间的 阅读全文
posted @ 2012-08-06 22:07 wingsless 阅读(2097) 评论(2) 推荐(3) 编辑
摘要: 我的项目有一张表,始终是手动导入数据。我接手之前的同事总是喜欢用pl/sql developer,但是我觉得还是黑框框看着有技术含量。 这里顺便就写一下有关sqlldr的简单用法。 有关sqlldr资料比较全面的应该就是帮助了,打出来看一下。 SQL*Loader: Release 11.2.0.1 阅读全文
posted @ 2012-08-04 13:19 wingsless 阅读(30546) 评论(2) 推荐(0) 编辑
摘要: DECLARE V_SQL VARCHAR2(1000); V_SQL_HEAD VARCHAR2(100); V_SQL_TAIL VARCHAR2(10); V_DAY VARCHAR2(8); CURSOR C_CUR IS SELECT TO_CHAR((TO_DATE('2012-01', 阅读全文
posted @ 2012-06-29 16:44 wingsless 阅读(5196) 评论(2) 推荐(0) 编辑
摘要: declare v_sql varchar2(1000); TABLE_NAME VARCHAR2(100); I_DAY VARCHAR2(8) := '20120611'; I_L_DAY VARCHAR2(8); begin I_L_DAY := TO_CHAR((TO_DATE(I_DAY, 阅读全文
posted @ 2012-06-25 09:54 wingsless 阅读(806) 评论(0) 推荐(0) 编辑
摘要: DELETE FROM table1 WHERE id IN (SELECT id FROM table1 GROUP BY id HAVING COUNT(id) > 1) AND ROWID NOT IN (SELECT MIN(ROWID) FROM table1 GROUP BY id HA 阅读全文
posted @ 2012-06-25 09:46 wingsless 阅读(327) 评论(2) 推荐(0) 编辑
摘要: PostgreSQL 阅读全文
posted @ 2012-05-03 21:49 wingsless 阅读(1668) 评论(8) 推荐(3) 编辑
摘要: 学oracle的人总会纠结于各种各样的函数。nvl应该算是一个非常好用的玩意儿。 nvl其实很简单,就是没有就返回一个指定值。 假定一个表中有两列,id和names,id=2的names为null。那么这个语句会返回这样的结果: 1 select nvl(t.names, 'noname') fro 阅读全文
posted @ 2012-04-25 21:06 wingsless 阅读(1584) 评论(0) 推荐(0) 编辑
摘要: 近年来数据库界最红的无疑是noSQL了,大佬oracle也开始搞了。对于非关系型数据库我还不是很了解,因此开始学习比较好上手的mongoDB好了。定时的做笔记也是学习的十分好的习惯。 1 数据库软件的安装。其实MongoDB(windows版本)是绿色的。这是非常好的事情,不用等待好久去安装了。在官网上(http://www.mongodb.org/downloads)就可以下载,然后解压到本地就可以了。这里我解压到了E:\MongoDB下。 2 数据文件路径。和所有的数据库一样,数据的存储要有专门的数据存储目录(windows下叫做文件夹的比较多)。在bin目录底下能看到很多很多的可... 阅读全文
posted @ 2012-03-10 16:39 wingsless 阅读(1565) 评论(8) 推荐(2) 编辑
摘要: 从今天开始我决定每周抽出一些空闲时间,记录一下Oracle的一些基础知识,也算是方便用baidu和google的人吧。 今天介绍一个非常有数学气息的--连接。 首先介绍我今天需要使用的两张表,test1和test2。test1是学生基本信息表,包括学生的名字和学号;test2是成绩表,有学生学号,成 阅读全文
posted @ 2012-02-25 20:46 wingsless 阅读(581) 评论(0) 推荐(1) 编辑
摘要: 很多朋友都问过我优化SQL的事情。我觉得在我不断地鼓励下,很多朋友现在都知道优化SQL之前要先看看执行计划,也在优化中获得了很多快乐。但是今天有人问我执行计划应该怎么看。我觉得这是个值得写一写的东西。 2012年6月21日增加: 我下面的执行计划是怎么打印出来的,很多朋友还是不知道。其实语句只有三条 阅读全文
posted @ 2012-02-24 20:42 wingsless 阅读(20375) 评论(7) 推荐(3) 编辑
摘要: 很久以前,在我还在某国企的时候,我被领导要求优化一段SQL。说真的那个时候我根本不知道SQL的优化为何物,但是百度google之后我发现所有的资料都写有这么一条:把选择性大的条件子句写在最后。因为oracle在执行的时候从底向顶执行。这句话我当时笃信不疑。可是后来我查到更多资料以及对SQL优化有了更 阅读全文
posted @ 2012-02-18 22:18 wingsless 阅读(2316) 评论(9) 推荐(1) 编辑