前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL编写规范

SQL编写规范

作者头像
默默的成长
发布2022-11-02 14:41:09
1.5K0
发布2022-11-02 14:41:09
举报
文章被收录于专栏:前端记录笔记

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情 >>

[SQL编写规范]

  • 一、书写规范
  • 二、书写优化性能建议
  • oracle数据库开发优化建议

一、书写规范

1、sql编写时,大小写一致

2、关键字单占一行,如select、from、where、and、group by、order by等

3、注意行缩进和对齐,建议语句中的关键字右对齐

4、使用空格,SQL语句内的算术运算符、逻辑运算符(AND、OR、NOT)、 比较运算符(=、<=、>=、>、、BETWEEN AND)、IN、LIKE等运算符前后都应加一空格。

5、对较为复杂的sql语句加上注释,说明算法、功能。

注释风格:注释单独成行、放在语句前面。

单行注释:--

多行注释:/* */

6、多表连接时,使用表的别名来引用列。

7、select后面的每一列(列数目大于1)单独占一行,where后面的每个条件(条件数大于1)单独占一行。

8、update set子句内容每一项单独占一行,无缩进。

9、insert子句内容每个表字段单独占一行,无缩进;values每一项单独占一行,无缩进 。

二、书写优化性能建议

1、关键SQL语句,尽量简化,不要包含太多的嵌套,避免执行计划错误的可能,原则上不能超过2层。

2、SQL语句包含多表连接时,建议使用表别名,对每个字段的使用都要带上表别名,例如: select a.col1, a.col2, b.col3 from table_name a, tableb b where a.col4=b.col5;

3、使用SELECT语句时,禁止使用select * ,应当指出具体查询的字段名,例如:select col1,col2,col3,… from table_name;。

4、使用INSERT语句时,禁止使用 insert into table_name values(?,?,?),不应不指定字段名直接插入VALUES,应指定插入的字段名,例如: insert into table_name (col1, col2,…) values(?,?,…)

5、避免在where使用'1=1','1=2'这种表达式作为部分条件,例如: select col1, col2 from table_name where 1=1 and col1 >0。

6、在进行多条记录的增加、修改、删除时,建议使用批量提交,降低事务的提交频度。

7、SQL语句要绑定变量实现SQL语句的共享,禁止使用常量

8、尽量少用表之间的嵌套连接。

9、尽量使用exists、not exists 替代 in、not in(大部份情况下exists 、not exists的性能都比in 、not in 好)。

10、使用union 的时候如果没有去除重复数据的要求,建议尽量用union all替代。

11、尽量避免使用order by和group by排序操作,因为大量的排序操作影响系统性能。如必须使用排序操作,尽量建立在有索引的列上。

12、索引的建立应慎重考虑,不是越多越好。索引可以提高相应的select的效率,但同时也降低了INSERT、UPDATE 的效率。

13、Where 条件中的索引列应避免使用<>、not、 is null、is not null、 like ‘%xxxx%’、’%xxx’、oracle系统函数等,这些常会使索引失效。

14、避免不必要的类型转换

15、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。

16、使用ROWID提高检索速度。对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。

17、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。

18、尽量避免对索引列进行计算。如对索引列计算较多,请让数据库管理员建立函数索引。

19、尽量不用联合列比如:a||b=c||d。

20、主键尽量不要用oracle指定的名称,要自己根据表来命名。

21、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。

22、复合索引创建时,建议按字段可选性高低进行排序,即字段值多的排在前面。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • [SQL编写规范]
  • 一、书写规范
  • 二、书写优化性能建议
相关产品与服务
数据库智能管家 DBbrain
数据库智能管家(TencentDB for DBbrain,DBbrain)是腾讯云推出的一款为用户提供数据库性能、安全、管理等功能的数据库自治云服务。DBbrain 利用机器学习、大数据手段、专家经验引擎快速复制资深数据库管理员的成熟经验,将大量传统人工的数据库运维工作智能化,服务于云上和云下企业,有效保障数据库服务的安全、稳定及高效运行。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档