SQL规约

文章目录

  • 前言
  • SQL规约-索引
    • 注意字段类型
    • 利用覆盖索引
    • 利用有序性
    • 禁模糊
  • 超过三个表禁止 join
  • SQL规约-count
    • 拒绝替代
    • 计算不重复行数
    • 当值全是NULL时
  • SQL规约-分页
    • 若 count 为 0
    • 优化超多分页场景
  • SQL规约-null值
    • 使用 ISNULL()来判断是否为 NULL 值
      • NULL< >NULL
      • NULL=NULL
      • NULL< >1
  • SQL规约-避坑指南
    • 不得使用外键与级联,一切外键概念必须在应用层解决
    • 禁止使用存储过程,存储过程难以调试和扩展,更没有移植性
    • 数据订正时,要先 select,避免出现误删除,确认无误才能执行更新语句
    • 只要涉及多个表,都需要在列名前加表的别名(或表名)进行限定
    • SQL 语句中表的别名前加 as,并且以 t1、t2、t3、...的顺序依次命名
    • in 后边的集合元素数量,控制在1000 个之内
  • 总结


前言


SQL规约-索引

注意字段类型

防止因字段类型不同造成的隐式转换,导致索引失效

利用覆盖索引

利用覆盖索引来进行查询操作,避免回表

利用有序性

如果有 order by 的场景,请注意利用索引的有序性

禁模糊

页面搜索严禁左模糊或者全模糊,如果需要请走搜索引擎来解决。

超过三个表禁止 join

SQL规约-count

拒绝替代

不要使用 count(列名)或 count(常量)来替代count(*)

计算不重复行数

count(distinct col) 计算该列除 NULL 之外的不重复行数

当值全是NULL时

当某一列的值全是NULL时,count(col)的返回结果为 0,但sum(col)的返回结果为NULL

SQL规约-分页

若 count 为 0

分页查询逻辑时,若count 为 0 应直接返回

优化超多分页场景

利用延迟关联或者子查询优化超多分页场景

SQL规约-null值

使用 ISNULL()来判断是否为 NULL 值

NULL< >NULL

NULL< >NULL 的返回结果是 NULL,而不是 false

NULL=NULL

NULL=NULL 的返回结果是 NULL,而不是 true

NULL< >1

NULL< >1 的返回结果是 NULL,而不是 true

SQL规约-避坑指南

不得使用外键与级联,一切外键概念必须在应用层解决

禁止使用存储过程,存储过程难以调试和扩展,更没有移植性

数据订正时,要先 select,避免出现误删除,确认无误才能执行更新语句

只要涉及多个表,都需要在列名前加表的别名(或表名)进行限定

SQL 语句中表的别名前加 as,并且以 t1、t2、t3、…的顺序依次命名

in 后边的集合元素数量,控制在1000 个之内


总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(数据库,sql,数据库)