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 及 ...
随机推荐
- OS.ENVIRON()详解
OS.ENVIRON()详解
- android LayoutInflater和inflate()方法的用法(转载)
原文出处:http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html 在实际开发中LayoutInflater这个类还是非常有用的,它的作用 ...
- 在ubuntu14.04上编译android4.2.2系统
原创作品,转载请注明出处,严禁非法转载 copyright:weishusheng 2015.8.1 时下android系统非常流行,下面就来说一下,下载编译一个andro ...
- WCF 学习总结3 -- 实例模式
通过WCF的ServiceBehaviorAttribute设定InstanceContextMode有下面的3中模式: 1. Single —— 表示所有的客户端共享一个会话(服务对象)(服务关闭时 ...
- Mtom Encoding in WCF
http://www.codeproject.com/Articles/632101/Mtom-Encoding-in-WCF http://msdn.microsoft.com/zh-cn/libr ...
- POJ 1947-Rebuilding Roads(树形背包)
题意: 一个树求得到一个节点数为p的子树,最小需要删除的边数. 分析:父节点到儿子这条边,删或不删,背包问题. #include <map> #include <set> #i ...
- HDU 5638 Toposort 线段树+贪心
题意:bc round 74 分析: 参考下普通的用堆维护求字典序最小拓扑序, 用某种数据结构维护入度小于等于k的所有点, 每次找出编号最小的, 并相应的减少k即可. 这个数据结构可以用线段树, 建立 ...
- lightoj 1016
水题,排个序直接搞. #include<cstdio> #include<string> #include<cstring> #include<iostrea ...
- 编写安全代码:小心volatile的原子性误解
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载.但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途. ============ ...
- tomcat memory leak
Struts + Hibernate做项目,重新部署项目会出现Memory Leak严重报错.虽然不影响使用,但还是有风险.经实验发现是Hibernate的session没有关闭.....粗心....