MySQL使用规范

来源:互联网 发布:吴亦凡长相知乎 编辑:程序博客网 时间:2024/05/22 15:51

一、建表:

1、任何字段,如果为非负数,必须为 unsigned

2、小数类型为decimal, 禁止使用float 和double

      float 和 double 在存储的时候,存在精度损失的问题,很可能在值的比较时,得到不正确的结果。如果存储的数据范围超过 decimal 的范围,建议将数据拆成整数和小数分开存储。

3、如果存储的字符串长度几乎相等,使用char 

4、varchar 是可变长字符串,不预先分配存储空间,长度不要超过5000,如果存储长度大于此值,定义字段类型为text

5、表必备3个字段: id, gmt_create, gmt_modified

      其中 id 必为主键,类型为 unsigned bigint、单表时自增、步长为 1。gmt_create,gmt_modified 的类型均为 date_time 类型。

6、单表行数超过500W行,或者单表容量超过2GB,才推荐建表的时候就分库分表


二、索引

1、业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。

2、如果有 order by 的场景,请注意利用索引的有序性。order by 最后的字段是组合索引的一部分,并且放在索引组合顺序的最后,避免出现 file_sort 的情况,影响查询性能。

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

      说明:如果一本书需要知道第 11 章是什么标题,会翻开第 11 章对应的那一页吗?目录浏览一下就好,这个目录就是起到覆盖索引的作用。正例:能够建立索引的种类:主键索引、唯一索引、普通索引,而覆盖索引是一种查询的一种效果,用 explain 的结果,extra 列会出现:using index。


三、sql 

1、使用 ISNULL()来判断是否为 NULL 值。注意:NULL 与任何值的直接比较都为 NULL。

说明:1) NULL<>NULL 的返回结果是 NULL,而不是 false。

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

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











0 0
原创粉丝点击