前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL审核 | 这里有 MySQL/Oracle 最常用的 SQL 开发规则

SQL审核 | 这里有 MySQL/Oracle 最常用的 SQL 开发规则

作者头像
爱可生开源社区
发布2022-09-26 10:05:45
4940
发布2022-09-26 10:05:45
举报
文章被收录于专栏:爱可生开源社区

SQL审核工具 SQLE 企业版近期推出了Oracle审核插件的第一个测试预览版。我们采集了过往我们在客户那碰到的问题和行业专家的建议,整理了一大批Oracle审核规则。这个版本我们从中挑选出现频次最高的以及影响范围最大一批规则加入到了Oracle审核插件中,这些规则能覆盖大多数客户的大多数场景,却又不会对客户使用产生额外的负担。在后续的时间内,我们将推出的Oracle审核插件逐步完善规则的拼图。接下来的内容将对高频规则给出我们的理解。插件的本身开发之前已经做过介绍,开发文档参考:https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/overview.html。

文章主要分为以下四部分内容:

一、SQLE 项目介绍

二、规则介绍

三、规则列表

四、后续计划

一、SQLE 项目介绍

爱可生开源社区的 SQLE 是一款面向数据库使用者和管理者,支持多场景审核,支持标准化上线流程,原生支持 MySQL 审核且数据库类型可扩展的 SQL 审核工具。

SQLE 获取

类型

地址

版本库

https://github.com/actiontech/sqle

文档

https://actiontech.github.io/sqle-docs-cn/

发布信息

https://github.com/actiontech/sqle/releases

数据审核插件开发文档

https://actiontech.github.io/sqle-docs-cn/3.modules/3.7_auditplugin/auditplugin_development.html

社区版在线体验

http://124.70.158.246:8888/超级管理员:admin,密码:admin。

企业版在线体验

http://124.70.158.246:8889/用户:admin,密码:admin。

二、规则介绍

SQLE 根据规则的使用场景,将现有的规则分为以下几个类别:

1. DDL规范类

该类规则主要是对表定义做了不同个维度包括字段,索引的各方面属性等方面进行限制,规则值可以根据自己业务场景进行配置,满足绝大部分表设计的规范。

2. 查询类的规范

该类规则主要是支持一些常见可能会影响性能的语句,具体可根据自己的规范选择性开启关闭。

3. 使用建议类的规则

该类规则涉及一些公司的数据库使用红线,禁止使用来或避免一些潜在的使用上或者维护上的风险。

4. 命名规范

该类规则主要针对一些表名、字段名、索引名格式进行限制,主要作用还是作为统一命名标准提高可读性。

5. 执行计划类

该类规则主要是在审核SQL时借助执行计划输出,解读执行计划特征,对于特定的影响性能的SQL给予用户提示。

三、规则列表

  1. 表建议使用主键;
  2. 表不建议使用外键;
  3. 索引个数建议不超过阈值;
  4. 表字段过多;
  5. 复合索引的列数量不建议超过阈值;
  6. 表不建议使用指定的字段类型;
  7. 表名、列名、索引名的长度不能大于指定字节;
  8. 数据库对象命名禁止使用关键字;
  9. 不建议使用select *;
  10. delete 和 update 语句,必须带where条件;
  11. 避免使用 having 子句;
  12. 不推荐使用子查询;
  13. 禁止除索引外的 drop 操作;
  14. 禁止使用视图;
  15. 禁止使用触发器;
  16. 单条SQL不建议过长;
  17. unique索引必须使用固定前缀;
  18. 普通索引必须使用固定前缀。
  19. 表关联存在笛卡尔积;
  20. 表关联嵌套循环层次过多;
  21. 表关联个数过多;
  22. 对大表进行全表扫描;
  23. 存在索引执行跳跃扫描;
  24. 对大索引执行全扫描。

四、后续计划

  • Oracle 审核插件将进行第二个预览版的开发,持续添加规则;
  • PostgreSQL 插件的开发正在进行中;
  • TiDB插件的开发将在6月份开始。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱可生开源社区 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档