为了项目的稳定,代码的高效,管理的便捷,在开发团队内部会制定各种各样的规范
这里分享一份我们定义的MySQL开发规范,欢迎交流拍砖
命名规范的对象是指数据库SCHEMA、表TABLE、索引INDEX、约束CONSTRAINTS等的命名约定
如无特殊需求,必须使用innodb存储引擎
如无特殊要求,必须使用utf8或utf8mb4
select count(distinct(col_name))/count(*) from tb_name;
如果结果小于0.2,则不建议在此列上创建索引,否则大概率会拖慢SQL执行select *
,join语句使用select *
可能导致只需要访问索引即可完成的查询需要回表取数select * from table
而不加任何where条件select *
,会让完成相同功能的sql所消耗的io量大很多,而且增加部分的io效率也更低下now()
,rand()
,sysdate()
,current_user()
等不确定结果的函数,在Where条件中的过滤条件字段上严禁使用任何函数,包括数据类型转换函数Join ... On ...
方式进行连接,而不允许直接通过普通的Where条件关联方式。外连接的SQL语句,可以使用Left Join On
的Join方式,且所有外连接一律写成Left Join
,而不要使用Right Join
in()
/union
替换or,并注意in的个数小于300select id,val from table where val like ‘%name’;
可以使用%模糊后缀查询如:select id,val from table where val like ‘name%’
INSERT ON DUPLICATE KEY UPDATE、REPLACE INTO、INSERT IGNORE
能看到这里一定是真爱,关注一下吧