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是一种高级数据库程序设 ...
随机推荐
- Java8 流式 API(`java.util.stream`)
熟悉 ES6 的开发者,肯定对数组的一些方法不是很陌生:map.filter 等.在对一组对象进行统一操作时,利用这些方法写出来的代码比常规的迭代代码更加的简练.在 C♯ 中,有 LINQ 来实现.那 ...
- linux免费https证书申请教程
linux免费https证书申请教程直接去阿里云 菜单有个证书服务进去有个购买证书菜单 选择免费的 然后会提示写个人资料 然后系统生成csr 然后提交审核这个时候会有份邮件 文件下载上传到你的服务器 ...
- 彻底解决springboot修改页面和代码会自动重启
3.application.yml配置 spring.devtools.restart.enabled=falsespring.thymeleaf.cache=false 1.解决thymeleaf修 ...
- ACM | 算法 | 快速幂
目录 快速幂 快速幂取模 矩阵快速幂 矩阵快速幂取模 HDU1005练习 快速幂 幂运算:\(x ^ n\) 根据其一般定义我们可以简单实现其非负整数情况下的函数 定义法: int Pow ( ...
- comment on exported function Perimeter should be of the form "Perimeter ..."go-lint
这个提示是检查代码注释格式有问题 正确方式:
- Golang检测Linux服务器端口占用
代码实现 func CheckPort(port int) error { checkStatement := fmt.Sprintf(`netstat -anp | grep -q %d ; ech ...
- Authentication using SASL/Kerberos
Prerequisites KerberosIf your organization is already using a Kerberos server (for example, by using ...
- ABP 临时禁用TenantId IsDelete过滤
由于业务需求,需要查询host的配置,所以要放开权限给租户查询其他租户的数据 直接在业务方法内嵌套 List<string> list = new List<string>() ...
- C++之拷贝控制 (Copy Control)
只有2种成员 值成员: 指针成员: 依实现可分为raw pointer / shared_ptr; 现在,仅考虑第③种:资源对象共享 角度来考虑拷贝控制 类的两种语义:值语义.似指针 编译器提供的de ...
- Git 多人协作 以及推送分支
参考链接:https://www.liaoxuefeng.com/wiki/896043488029600/900375748016320 当你从远程仓库克隆时,实际上Git自动把本地的仓库的mast ...