SQL书写技巧
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书写技巧的更多相关文章
- Oracl中sql书写技巧
1.写脚本(1)为什么不直接设置回滚点?因为服务器上数据库是很多人使用的,所以除了自己操作外,有很多人操作.如果设置回滚点时,回滚后,很多人操作都消失了,因此savepoint不可以.但是可以自己书写 ...
- SQL优化之SQL 进阶技巧(上)
由于工作需要,最近做了很多 BI 取数的工作,需要用到一些比较高级的 SQL 技巧,总结了一下工作中用到的一些比较骚的进阶技巧,特此记录一下,以方便自己查阅,主要目录如下: SQL 的书写规范 SQL ...
- SQL开发技巧(二)
本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列文章基于SQLServer系列,且版本为SQLServer2005及以上-- 文章系列目录 SQL开发技巧(一) SQL开 ...
- SQL优化技巧
我们开发的大部分软件,其基本业务流程都是:采集数据→将数据存储到数据库中→根据业务需求查询相应数据→对数据进行处理→传给前台展示.对整个流程进行分析,可以发现软件大部分的操作时间消耗都花在了数据库相关 ...
- SQL开发技巧(二) 【转】感觉他写的很好
本文转自: http://www.cnblogs.com/marvin/p/DevelopSQLSkill_2.html 本系列文章旨在收集在开发过程中遇到的一些常用的SQL语句,然后整理归档,本系列 ...
- Sql开发技巧
原文:Sql开发技巧 简介 本文主要介绍下述几个技巧: 使用Row_Number分页 事务 根据条件刷选记录的技巧 分页 主要是使用了Row_Number()这个函数.一般如下: declare @P ...
- MYSQL SQL语句技巧初探(一)
MYSQL SQL语句技巧初探(一) 本文是我最近了解到的sql某些方法()组合实现一些功能的总结以后还会更新: rand与rand(n)实现提取随机行及order by原理的探讨. Bit_and, ...
- 常用的7个SQl优化技巧
作为程序员经常和数据库打交道的时候还是非常频繁的,掌握住一些Sql的优化技巧还是非常有必要的.下面列出一些常用的SQl优化技巧,感兴趣的朋友可以了解一下. 1.注意通配符中Like的使用 以下写法会造 ...
- MySQL SQL查询优化技巧详解
MySQL SQL查询优化技巧详解 本文总结了30个mysql千万级大数据SQL查询优化技巧,特别适合大数据里的MYSQL使用. 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 ...
随机推荐
- [原]Unity3D深入浅出 - 物理引擎之碰撞体(Colliders)
通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过. 常用碰撞体有以下几种: Box Collider:盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长 ...
- PHP内置的Web Server的使用
自PHP5.4之后 PHP内置了一个Web 服务器. 让我们来看看php Web Server的简单使用: 启动php Web Server php -S localhost:8080 通过 php ...
- RPi 2B apache2 mysql php5 and vsftp
/************************************************************************* * RPi 2B apache2 mysql ph ...
- ubuntu常用快捷键
1.直接退出窗口 Ctrl + q 2.窗口变大变小 Alt + Q 3.最小化窗口,显示桌面Ctrl + Alt + D 4.把当前窗口移到另一个工作区 Shift+ Ctrl + Alt +方 ...
- 自定义Sharepoint的登陆页面
转:http://www.cnblogs.com/jecoso/archive/2008/05/25/1207151.html 原文作者:Damon Armstrong 原文地址:http://www ...
- CPU affinity 进程和线程的亲缘性
设置Processor Affinity 作用: 1.进程和线程的亲缘性(affinity),使进程或线程在指定的CPU(核)上运行.(比如程序A,在第4个核心上运行) 2.设置进程 或者 线程, 使 ...
- 【Tcpcopy】离线回放功能
最近因调试问题,需要一直进行tcpcopy,拿有问题的包进行测试.决定使用tcpcopy对录制脚本进行回放,以下为我操作的具体步骤.主要是三块 1 下载安装具有离线回放功能的tcpcopy 2 使用t ...
- Windows版词汇小助手V3.0发布了
欢迎使用词汇小助手 作者:IT小小龙 电子邮箱:long_python@126.com 个人博客:http://blog.sina.com.cn/buduanqs 一款跨平台词汇查询记忆学习软件. 已 ...
- 使用asp.net MVC4中的Bundle遇到的问题及解决办法
背景 之前有过使用MVC3的经验,也建过MVC4的基本样例看过,知道有bundle这么一个方法. 近日想建个网站使用MVC4,但是我觉得在基本样例上改不好,有太多无用的东西,所以就建了一个空白的MVC ...
- java Object类学习
/* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...