随笔分类 -  数据库

摘要:我一直不知道到底有没有函数可以实现标题的功能,所以我写了个适合我们业务的。如果大家有更好的,请告诉我。下面是源码: CREATE OR REPLACE FUNCTION REPLACE_POSITION(STR_IN VARCHAR2, POSITION INTEGER, NEW_CHAR VARC 阅读全文
posted @ 2012-11-20 17:34 wingsless 阅读(684) 评论(0) 推荐(0)
摘要:熬过了月初的匆忙之后终于有一个喘息的机会了。最近又开始接手过去的存储过程的改造工作,我在改造中发现了一些问题,我们的同事写insert语句的时候总是喜欢加上append这个hints。这个习惯的养成应该都是我们那个模板造成的,大家在写的时候也就不去思考为什么要加这个hints了,也不知道加这个hin 阅读全文
posted @ 2012-11-11 00:28 wingsless 阅读(2231) 评论(4) 推荐(0)
摘要:我曾经迷茫于一个问题,为什么有的时候明明有索引,却无法提升效率。后来我在很多书上和论坛上看到,索引分为3种,默认的是B树索引,这个类型的索引在对付重复很多很多的列的时候并没有任何优势,比如性别列这个只有两个值(不排除会有第三值)的列。而这种重复度很高的列在我平时的生产系统中非常多,比如运营商的行政区 阅读全文
posted @ 2012-10-25 20:40 wingsless 阅读(2193) 评论(6) 推荐(0)
摘要:昨天写了一下关于Oracle表压缩的问题(http://www.cnblogs.com/wingsless/archive/2012/09/23/2699309.html),由于时间原因没有具体的实验,只是使用了网上的资料,但是这并不是我的风格,因为网上资料直接拿来转载的多,自己原创的少。所谓事必躬 阅读全文
posted @ 2012-09-24 21:52 wingsless 阅读(1905) 评论(0) 推荐(0)
摘要:这周客户的问题非常多,总是说我的数据不对。于是我对数据梳理了以后发现以前认为是重复数据的,其实并不是,而是我忽略了一个维度。那么这样一来,我们的周详单表就会有500多万的数据。一个月按照4周计算,就要有2000万条数据。而我大概计算了一下,每一个周的分区要占用2G多的存储空间,要知道电信给我们的空间 阅读全文
posted @ 2012-09-23 22:35 wingsless 阅读(2263) 评论(3) 推荐(0)
摘要:前一阵子写了一点有关分区表的东西(http://www.cnblogs.com/wingsless/archive/2012/02/11/2347111.html)。我们的项目限于甲方的抠门,分配给我们的磁盘空间相当的小,因此我们的项目中并不习惯使用索引这个好用的东西,因为索引也是要耗用很大的空间的 阅读全文
posted @ 2012-08-06 22:07 wingsless 阅读(2107) 评论(2) 推荐(3)
摘要:我的项目有一张表,始终是手动导入数据。我接手之前的同事总是喜欢用pl/sql developer,但是我觉得还是黑框框看着有技术含量。 这里顺便就写一下有关sqlldr的简单用法。 有关sqlldr资料比较全面的应该就是帮助了,打出来看一下。 SQL*Loader: Release 11.2.0.1 阅读全文
posted @ 2012-08-04 13:19 wingsless 阅读(30608) 评论(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 阅读(5213) 评论(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 阅读(811) 评论(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 阅读(332) 评论(2) 推荐(0)
摘要:学oracle的人总会纠结于各种各样的函数。nvl应该算是一个非常好用的玩意儿。 nvl其实很简单,就是没有就返回一个指定值。 假定一个表中有两列,id和names,id=2的names为null。那么这个语句会返回这样的结果: 1 select nvl(t.names, 'noname') fro 阅读全文
posted @ 2012-04-25 21:06 wingsless 阅读(1591) 评论(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 阅读(1576) 评论(8) 推荐(2)
摘要:从今天开始我决定每周抽出一些空闲时间,记录一下Oracle的一些基础知识,也算是方便用baidu和google的人吧。 今天介绍一个非常有数学气息的--连接。 首先介绍我今天需要使用的两张表,test1和test2。test1是学生基本信息表,包括学生的名字和学号;test2是成绩表,有学生学号,成 阅读全文
posted @ 2012-02-25 20:46 wingsless 阅读(598) 评论(0) 推荐(1)
摘要:很多朋友都问过我优化SQL的事情。我觉得在我不断地鼓励下,很多朋友现在都知道优化SQL之前要先看看执行计划,也在优化中获得了很多快乐。但是今天有人问我执行计划应该怎么看。我觉得这是个值得写一写的东西。 2012年6月21日增加: 我下面的执行计划是怎么打印出来的,很多朋友还是不知道。其实语句只有三条 阅读全文
posted @ 2012-02-24 20:42 wingsless 阅读(20406) 评论(7) 推荐(3)
摘要:很久以前,在我还在某国企的时候,我被领导要求优化一段SQL。说真的那个时候我根本不知道SQL的优化为何物,但是百度google之后我发现所有的资料都写有这么一条:把选择性大的条件子句写在最后。因为oracle在执行的时候从底向顶执行。这句话我当时笃信不疑。可是后来我查到更多资料以及对SQL优化有了更 阅读全文
posted @ 2012-02-18 22:18 wingsless 阅读(2323) 评论(9) 推荐(1)
摘要:近来在工作上遇到一件事情。我有一张用户订单表,这个订单表有一个order_id,是唯一约束。同时有一张订单流程表,和订单表以ser_id关联,一个ser_id至少对应一条订单流程记录。现在我要将两个表汇总,成为一张表,以ser_id为唯一约束,其中一个字段来自流程表,这个字段是ser_id对应的几条 阅读全文
posted @ 2012-02-12 01:55 wingsless 阅读(17696) 评论(0) 推荐(3)
摘要:上周我写了一篇博文,里面有一点关于分区表的论述(http://www.cnblogs.com/wingsless/archive/2012/02/04/2338292.html)。但是我发现我少写了一点,在你的查询条件和分区列没有太大关系的时候,分区表不会帮助你提高效率。 图1 图2 我是按照are 阅读全文
posted @ 2012-02-11 21:42 wingsless 阅读(2170) 评论(2) 推荐(1)
摘要:在之前的工作中,我曾经遇到过表特别大的情况,这个时候我想到了使用with来降低查询的消耗,前文中已经有了描述:http://www.cnblogs.com/wingsless/archive/2012/01/15/2323060.html。今天我突然想到,其实用with和from (select)应 阅读全文
posted @ 2012-02-04 21:24 wingsless 阅读(3802) 评论(2) 推荐(1)
摘要:有的时候会遇到这样的问题,我们需要查询一张表,而且要按照业务排序,比如我需要如下的结果: 地区 日期 费用 产品编号 用户编号 290 201202 258 1 s1 290 201202 200 1 s5 290 201202 100 1 s100 290 201202 90 2 s7 290 2 阅读全文
posted @ 2012-02-04 20:41 wingsless 阅读(58955) 评论(0) 推荐(2)
摘要:前两天的业务需求里需要关联好几张表出一个详单报表,这个需求其实很简单,但是数据量大,源表又不是分区表,就变得很头疼了。 最初我的代码大概是这样子的: select a.id,a.name,a.code,b.type,( select p_name from C c where c.pid = b.p 阅读全文
posted @ 2012-01-15 20:59 wingsless 阅读(4650) 评论(13) 推荐(3)