加入收藏 | 设为首页 | 会员中心 | 我要投稿 淮安站长网 (https://www.0517zz.cn/)- 运营、云管理、经验、智能边缘、云硬盘!
当前位置: 首页 > 创业 > 正文

GitHub发布2020年度报告

发布时间:2021-01-30 18:09:46 所属栏目:创业 来源:互联网
导读:禁止使用select *进行输出,应该选择具体的字段进行输出。除了避免无用的字段造成传输上的性能损耗,还能在一定程度上避免敏感信息的泄漏。 SQL中避免出现now()、rand()、sysdate()、current_user()等不确定结果的函数。 禁止使用order by rand()。 插入语句

禁止使用select *进行输出,应该选择具体的字段进行输出。除了避免无用的字段造成传输上的性能损耗,还能在一定程度上避免敏感信息的泄漏。

SQL中避免出现now()、rand()、sysdate()、current_user()等不确定结果的函数。

禁止使用order by rand()。

插入语句,不要直接使用 nsert into table values(),而应该加入具体的字段,否则无法适应数据库变更情况。在做批量插入时,一次性操作100-200条就可以,没必要把batch数量设置成上千上万。

禁止非框架类业务代码,直接调用set sql_mode或者set tx_isolation,禁止使用SELECT … FOR UPDAT,优先采用乐观锁实现。

多表关联不要超过3个,尽量拆分成简单的SQL处理。

大多数开发人员会在需要时写UNION,这往往会导致执行一个排序来消除重复。应该尽量使用UNION ALL来代替UNION。

注意OR语句的一些改善情况。比如WHERE id=1 OR id=2可以 改写为WHERE id IN(1,2)。在不同的字段,可以将OR改写为UNION ALL。

4. 命名规范

数据库表和字段的命名,不要使用驼峰命名方式。比如,不能叫saleOrder,而应该叫做sale_order。因为大多数数据库,都不区分大小写,下划线命名会更安全。

这些命名,只能使用英文小写字母、数字和下划线,长度不超过17个字符。

命名应该有确切的含义。和代码规范一样,不允许使用a,b等无意义的字符串。不允许中文拼音缩写、中英文混用等。

严禁出现哥哥表和妹妹字段。

5. 安全安全安全图片
 

选择性很小的字段(低基数列),不要加索引。比如一些state,type,布尔判断等。因为加了也没用。

尽量让索引的内容尽量的短!比较长的子段,要使用前缀索引。比如:title varchar (64) ,可以创建前缀索引 idx_title (title(16))。

合理利用索引的最左原则,合并相似的索引。比如 (a) (ab) (abc)三种索引需求,我们只需要创建abc这一个索引就ok了。

避免在索引列做计算(这将造成索引失效),比如 data_format(created_date),substring(short_name,0,6) = 'xjjdog'。

不能使用%前缀模糊查询,因为无法使用索引,例如:WHERE name LIKE '%味道'。

不能使用数据库端做全文检索操作。虽然它支持,也不要这么做。

索引的命名要有章可循:idx_前缀表明是普通索引,而 uk_前缀表明的是唯一索引。

3. SQL规范

建议在每个表中,添加下面三个字段。其实,SpringBoot JPA,也建议你添加上这三个字段。根据时间字段,除了审计,还能够做一些非常nice的迁移操作;version字段是高并发下的乐观锁实现,UPDATE语句可以结合version字段,避免并发操作造成的不一致情况。

  • created:记录创建时间,时间类型
  • modified:记录修改时间,时间类型
  • version:“乐观锁”的版本标记,long型,默认为0

大多数字段应该定义成not null的,并分配默认值,但是不要default null,因为数据库无法索引null值。

复杂的SQL查询语句,是绝对要避免的。我们所说的,就是慢查询。慢查询会占用大量资源,并阻塞线程,应该见谅将大SQL拆分成多条简单的SQL,减少数据的锁定时间。

(编辑:淮安站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读