SQL编程规范整理
一、排版规范
1.代码缩进
对于判断、循环等处理使用字符缩进
缩进的空格最好不要使用TAB键
2.空格及换行
变量定义、相对独立的程序块等要单独成行,便于阅读
太长的程序(超过110列)应做换行处理
操作符前后加入空格
3.书定习惯
不同操作类型的操作符用括号隔离
表、字段别名用意义的名称替代
所有书写使用大写,方面移植
二、命名规范
1.存储过程
”SP_“作为前缀
2.函数
“F_”作为前缀
3.触发器
“TR_”作为前缀
4.视图
“V_”作为前缀
5.链接服务
“LNK_”作为前缀
6.主键
“PK_”作为前缀,表名在后,如:PK_表名
7.外键
“FK_”作为前缀,主表名,从表名,如:FK_主表_从表
8.索引
“ID_”作为前缀,列名在后,如:ID_COLNAME
9.序列
“SEQ_”作为前缀
三、通用SQL性能优化
1.索引使用
尽量使用“>=”或,不要使用“>”
LIKE尽量前端匹配
尽量不要使用“<>”
条件中不要使用函数
条件中不要使用计算
条件中尽量不要使用NOT
尽量避免使用OR
合理利用复合索引
2.SQL优化
避免使用复合SQL语句(如:SELECT A,B FROM TABLE1 WHERE A IN )(SELECT A1 FROM TABLE2))
尽量避免使用DISTINCT
尽量避免直接使用自定义函数
对于查询比较复杂,数据量较大的查询,可以使用工具进行查询计划检测,调整语句性能
不要在存储过程或函数中反复访问同一张表,如果需要,可以将数据放在临时表中使用。
应尽量减少控制语句的检查次数,以提高执行效率
如果能从一条SQL语句中获取多个想要的数据,就不要分多条SQL语句分分次获取
在长度和精度和精度允许的情况下,建议用INTERGE代替NUMERIC,在可以提高性能的情况下,使用EXISTS代替IN,NOT EXISTS 代替NOT IN
查询的WHERE过滤原则,应使过滤记录数最多的条件
多表连接查询时,可以先按条件过滤在进行连接
select、insert子句的代码中不允许出现“*”以代替查询所有字段,必须用实际的字段名代替
提高GROUP BY的执行效率,在进行GROUP BY 之前将不需要条件过滤掉
SQL编程规范整理的更多相关文章
- php编程规范整理
该规范对其他语言,部分是通用的标准....好吧,废话不多说啦,直入正题: 1.PHP 编程规范与编码习惯最主要的有以下几点: 1 文件说明 2 function 函数体说明 3 代码缩进 4 if省略 ...
- Java编程规范整理
分享一份网友整理的编程过程中的命名规范 包命名 包名按照域名的范围从大到小逐步列出,恰好和Internet上的域名命名规则相反. 由一组以"."连接的标识符构成,通常第一个标识符为 ...
- iOS编程规范(整理)
一.文档结构管理 1.建立Libraries文件夹,所有第三方库放入其中. 2.建立Utilities文件夹,自已封装的类放入其中. 3.建立Constants.h头文件,所有的常量定义于其中.Con ...
- 华为C语言编程规范
DKBA华为技术有限公司内部技术规范DKBA 2826-2011.5C语言编程规范2011年5月9日发布 2011年5月9日实施华为技术有限公司Huawei Technologies Co., Ltd ...
- PHP编程规范
好的编程规范不仅是对阅读者的负责,也是对自身的负责: ----割---- 一直以来我都是以php函数的风格来写php,所有变量,函数,类都使用小写,单词之间以下划线隔开,一直比较排斥驼峰式的代码规范, ...
- .Net程序员学用Oracle系列(3):数据库编程规范
<.Net程序员学用Oracle系列:导航目录> 本文大纲 1.书写规范 1.1.大小写风格 1.2.缩进风格 1.3.换行 1.4.其它 2.命名规范 2.1.数据库对象命名 2.2.变 ...
- sqL编程篇(三) 游标与存储过程
sql编程2 游标与存储过程 sql编程中的游标的使用:提供的一种对查询的结果集进行逐行处理的一种方式不用游标的处理解决方式:逐行修改工资update salar set 工资=‘新工资’ where ...
- 使Eclipse符合Java编程规范
编程规范是很重要的东西,能让团队的代码易于阅读和维护,也便于日后的功能扩展. 工欲善其事必先利其器!作为一个Java程序员,与Eclipse打交道可能是一辈子的事情.将Eclipse设置为符合公司编程 ...
- ORACLE PL/SQL编程详解
ORACLE PL/SQL编程详解 编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设 ...
随机推荐
- [记录]UserControl 的一个值得注意的问题 [属性" * "的代码生成失败.错误是:"程序集"*.Version=1.0.0.0,Culture=neutral,..........无标记为序列化"
开发时在做UserControl,需要注意的List<>集合问题~~~! 其他类型的集合可能也存在这样的问题,但是我没去测试,在写集合的时候一般List<>用的多点,所以经常碰 ...
- mysql主从复制报错解决方案
mysql主从复制报错解决方案 我先制造个错误 在slave删除个info3字段 然后在master 在info3插入数据 报错如下<pre> Last_SQL_Errno: 1054 L ...
- flume参数解析+启动参数解析
flume参数: #example.conf:单节点Flume配置 #命名此代理上的组件 a1.sources = r1 a1.sinks = k1 a1.channels = c1 #描述/配置源 ...
- ES7.3.0配置邮件告警
情况说明: 三台es组成集群,一台kibana,版本均为7.3.0 es版本要求是白金版,基础版的不行,不过可以试用30天的白金版 步骤:先说我自己走通的流程,然后介绍官方说明 1.因为我这边使用的是 ...
- Kafka学习笔记之Kafka自身操作日志的清理方法(非Topic数据)
0x00 概述 本文主要讲Kafka自身操作日志的清理方法(非Topic数据),Topic数据自己有对应的删除策略,请看这里. Kafka长时间运行过程中,在kafka/logs目录下产生了大量的ka ...
- framework7 下拉刷新、无限滚动
下拉刷新: html: <div class="page-content ptr-content"> <%--下拉刷新图标--%> <div clas ...
- vs2017专业版和企业版的密钥
Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH
- intel AVX指令集
听说这 AVX 很牛,,支持Win7,大幅提高游戏浮点运算性能warning C4752: 发现 Intel(R) 高级矢量扩展:请考虑使用 /arch:AVX
- JSP+SpringMVC框架使用WebUploader插件实现注册时候头像图片的异步上传功能
一.去官网下载webuploader文件上传插件 https://fex.baidu.com/webuploader/ 下载好后把它放到Javaweb项目的文件夹中(我放到了webcontent下面的 ...
- Beego学习笔记5:MVC-VC
MVC-VC 1> 新建一个user.go控制器,其代码如下: package controllers import ( "webapp/models" " ...