SQL书写技巧:

1、针对分区表,如果可以使用分区条件的,一定要加分区条件。分区条件的使用,可以减少不必要的数据访问,加快查询数据,如TB_CSV_ACCEPT_FLOW_OPERATOR表,以accept_month字段分区,在sql中如加上accept_month=’value’,则可以在指定的分区内查询数据,而不是全表扫描。

2、分区字段不可以加函数,函数操作导致无法使用分区条件,引起全表扫描,如FT_MID_SUBTOTAL_ITEM表,以sum_date字段分区,查询201001月份数据,错误写法:substr(sum_date,1,6)=’201001’,无法使用分区条件,正确写法应该是sum_date>=20010101 and sum_date<=20100131。

3、分区字段类型必须与比较的值类型一致,不一致的类型比较,导致分区条件无法使用。如TB_CSV_ACCEPT_FLOW_OPERATOR表,分区字段accept_month类型是char,正确的写法是accept_month=’201001’。错误写法accept_month=201001。

4、不必要的函数操作,在对字段做比较时,不建议对字段做函数操作。如:change_expire_date字段是date型,在比较时如果写成to_char(change_expire_date,’yyyymmdd’)=’20100101’则比change_expire_date=to_date(‘20100101’,’yyyymmdd’)来的低效,耗用更多的CPU资源。

5、索引的使用,索引的字段比较,比较双方的类型必须一致,否则无法使用索引,tb_acc_account表owner字段建有索引,owner是varchar2类型,正确的写法:owner=’ 595305002876112’,错误的写法:owner=595305002876112

6、索引的过渡使用,数据集市数据库对单个会话的IO没有做限制,不建议直接移值boss的写法,通过循环或游标的方式以索引来大量访问某张表。比如:希望查询几万个user_id某天的话单: BOSS可能需要通过循环来查询: For v in (select user_id from temp_user_id) loop   Select * from tb_seu_call_201001 where user_id=v; End loop; 数据集市的写法:直接两表关联 Select a.*from tb_seu_call_201001 a,temp_user_id b where a.user_id=b.user_id

7、数据删除,删除全表数据请使用truncate table xxx,删除某个分区数据请使用alter table xxx truncate partition p1;

8、表结构设计考虑: 表是否需要分区: 考虑条件:表是否很大,是否经常需要删除某天/某月/某种类型的数据,数据是否经常变动,变动的数据是否会从一个分区迁移到另外一个分区。 合理的字段类型,必要的约束条件。 表是否压缩,压缩表可以减少存储占用,访问时也可减少IO操作,代价是cpu资源使用的增加。数据经常变动的表(update,delete操作)不适合于压缩。存储过程中使用的中间临时表,数据插入后就不在变更的目标表,可以考虑压缩。

9、数据插入的优化: /*+append nologging*/ hints提示可以加快输入的插入数据,减少重做日志生成,如果是压缩表,数据插入时同时也完成压缩。但该提示不可用于并发度高的表,即同时有多个人在执行DML操作的表。另外,有delete操作的表也不适合append提示。

SQL书写技巧的更多相关文章

  1. Oracl中sql书写技巧

    1.写脚本(1)为什么不直接设置回滚点?因为服务器上数据库是很多人使用的,所以除了自己操作外,有很多人操作.如果设置回滚点时,回滚后,很多人操作都消失了,因此savepoint不可以.但是可以自己书写 ...

  2. SQL优化之SQL 进阶技巧(上)

    由于工作需要,最近做了很多 BI 取数的工作,需要用到一些比较高级的 SQL 技巧,总结了一下工作中用到的一些比较骚的进阶技巧,特此记录一下,以方便自己查阅,主要目录如下: SQL 的书写规范 SQL ...

  3. SQL开发技巧(二)

    本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...

  4. SQL优化技巧

    我们开发的大部分软件,其基本业务流程都是:采集数据→将数据存储到数据库中→根据业务需求查询相应数据→对数据进行处理→传给前台展示.对整个流程进行分析,可以发现软件大部分的操作时间消耗都花在了数据库相关 ...

  5. SQL开发技巧(二) 【转】感觉他写的很好

    本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...

  6. Sql开发技巧

    原文:Sql开发技巧 简介 本文主要介绍下述几个技巧: 使用Row_Number分页 事务 根据条件刷选记录的技巧 分页 主要是使用了Row_Number()这个函数.一般如下: declare @P ...

  7. MYSQL SQL语句技巧初探(一)

    MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and, ...

  8. 常用的7个SQl优化技巧

    作为程序员经常和数据库打交道的时候还是非常频繁的,掌握住一些Sql的优化技巧还是非常有必要的.下面列出一些常用的SQl优化技巧,感兴趣的朋友可以了解一下. 1.注意通配符中Like的使用 以下写法会造 ...

  9. MySQL SQL查询优化技巧详解

    MySQL SQL查询优化技巧详解 本文总结了30个mysql千万级大数据SQL查询优化技巧,特别适合大数据里的MYSQL使用. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...

随机推荐

  1. [LOJ 1030] Discovering Gold

    B - Discovering Gold Time Limit:2000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu ...

  2. 剑指Offer:第一个只出现一次的字符

    题目:在字符串中找出第一个只出现一次的字符.如输入"abaccdeff",这输出'b' // 第一个只出现一次的字符 #include <stdio.h> char f ...

  3. 【转】 实现 Cocos2d-x 全局定时器

    转自:http://www.tairan.com/archives/3998 cocos2d-x 中有自己的定时器实现,一般用法是在场景,层等内部实现,定时器的生命周期随着它们的消亡而消亡,就运行周期 ...

  4. svc 报“由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。“的HTTP 错误 404.3 – Not Found

    原因:系统没有默认为IIS注册WCF服务的svc文件的MIME映射. 解决方法:管理员身份运行C:\Windows\Microsoft.NET\Framework\v3.0\Windows Commu ...

  5. 使用Busybox-1.2.0制作根文件系统

    使用Busybox-1.2.0制作根文件系统 cross-3.3.2 make-3.8.1 STEP 1: 创建根文件系统目录,主要包括以下目录/bin,/etc,/dev,/mnt,/sbin,/u ...

  6. JSON--List集合转换成JSON对象

    转自:http://www.cnblogs.com/xmaomao/p/3184542.html 1. 简单的手动放置 键值对 到JSONObject,然后在put到JSONArray对象里 List ...

  7. 位操作:BitVector32结构 z

    目录 温习位操作 BitVector32的位操作 CreateMask方法 使用BitVector32.Section来存储小整数 BitVector32结构体位于System.Collections ...

  8. 一个HR给应届毕业生的面试建议 后悔看到的太晚了 (转)

      开始之前务必记住: 黄金法则:80/20---你要承担起80%的谈话而面试官只会说20%.      白金法则:你必须试着控制面试的节奏和话题.      钻石法则:对于没有把握的问题,抛回给面试 ...

  9. ROW_NUMBER 使用

    WITH t_pageAS( SELECT ROW_NUMBER() OVER ( ORDER BY table_name ) AS row_index,column_name FROM table_ ...

  10. C语言不支持默认参数,不过可以用宏来模拟

    C语言不支持默认参数,不过可以用宏来模拟: //--------------------------------------------------------------------------- ...