SQL 编码标准
2015-10-23 17:47
309 查看
1. 你必须从别名表,易于使用的表,该表列
实例 select owner,object_id,name from a,b where a.id=b.id;
假设是不正确的别名表。我知道你是怎么访问表列其中。
假定SQL行,假设SQL表关联非常多。去死吧。
2. 数据库对象 命名
表 前缀/后缀 T_XXX
视图 前缀/后缀 V_XXX
物化视图 前缀/后缀 MV_XXX
索引 IDX_列名
特殊表
数据仓库 事实表 _FACT
数据仓库 维度表 _DIM
业务中间表 _TMP
日志表 _LOG
才用这样的命名规范,方便不熟悉业务的DBA,开发者更快的上手
3. 严禁标量子查询(分页能够写)
select (select ... from a where a.id=b.id) from b; ---这样的就叫标量子查询
假如 b 返回100w 那么 a可能被扫描 100w次 然后你懂的 死了
标量子查询 所有改写为 select ... from a left join b .....
4. 严禁sql套自己定义函数,包,存储过程
道理跟 标量子查询一样
5. 严禁视图中select包括ROWNUM create or replace view ....select rownum
影响谓词推入+视图合并
6. 严禁视图 里面有 order by
干扰运行计划
7. 严禁视图套用超过2个 。由于最里面的视图改了可能影响最外面的 高内聚 低耦合
假设最里面的视图出问题。那么调用这个视图的SQL全出问题,改写代码都改死你
8. in exists 。not in not exists 改写为 with as (子查询)
这个不说,来报名吧
9. 分页不能有 distinct, group by ,union /union all,order by 仅仅能一个表
来报名吧。不说为啥这样
10. 关联更新,改写为merge 或者改写为利用 rowid更新
11. 禁止对join列用函数 比方 where trunc(时间)=b.时间
12.需要注意的是隐式转换
13. 遗漏....注册可用
实例 select owner,object_id,name from a,b where a.id=b.id;
假设是不正确的别名表。我知道你是怎么访问表列其中。
假定SQL行,假设SQL表关联非常多。去死吧。
2. 数据库对象 命名
表 前缀/后缀 T_XXX
视图 前缀/后缀 V_XXX
物化视图 前缀/后缀 MV_XXX
索引 IDX_列名
特殊表
数据仓库 事实表 _FACT
数据仓库 维度表 _DIM
业务中间表 _TMP
日志表 _LOG
才用这样的命名规范,方便不熟悉业务的DBA,开发者更快的上手
3. 严禁标量子查询(分页能够写)
select (select ... from a where a.id=b.id) from b; ---这样的就叫标量子查询
假如 b 返回100w 那么 a可能被扫描 100w次 然后你懂的 死了
标量子查询 所有改写为 select ... from a left join b .....
4. 严禁sql套自己定义函数,包,存储过程
道理跟 标量子查询一样
5. 严禁视图中select包括ROWNUM create or replace view ....select rownum
影响谓词推入+视图合并
6. 严禁视图 里面有 order by
干扰运行计划
7. 严禁视图套用超过2个 。由于最里面的视图改了可能影响最外面的 高内聚 低耦合
假设最里面的视图出问题。那么调用这个视图的SQL全出问题,改写代码都改死你
8. in exists 。not in not exists 改写为 with as (子查询)
这个不说,来报名吧
9. 分页不能有 distinct, group by ,union /union all,order by 仅仅能一个表
来报名吧。不说为啥这样
10. 关联更新,改写为merge 或者改写为利用 rowid更新
11. 禁止对join列用函数 比方 where trunc(时间)=b.时间
12.需要注意的是隐式转换
13. 遗漏....注册可用
相关文章推荐
- Oracle中游标表达式Cursor操作符的运用
- 项目开发--------CoreData 数据库
- SLICK3.0 MySQL InnoDB Driver
- 远程连接mysql数据库
- 从关系型数据库到非关系型数据库
- mysql加密
- django models进行数据库增删查改
- SQL Server常用的几种启动方式
- Oracle RAC 客户端故障转移(failover) TAF
- myql创建用户和数据库
- mysql delayed 延迟插入
- Oracle 编码格式 及其 char Varchar Varchar2的区别
- 记一次T-SQL查询优化 索引的重要性
- 数据库性能的优化
- 记一次因磁盘块默认保留策略导致的数据库导入失败问题
- 记一次因磁盘块默认保留策略导致的数据库导入失败问题
- oracle 第16章 事务
- Oracle 表 drop 后闪回恢复
- oracle 第15章 undo表空间管理
- ORACLE日期时间函数大全