笔记:Mysql踩坑之路

多年msyql使用积累的一些最基本的坑,简单记录一下:
1.访问控制(User和主机);
2.禁止业务系统使用root,root应作为保留管理员账号;
3.字符集建议都设置为utf8mb4;
4.表字段不得超过30个,且单表数据最好不要超过400w,大数据进行合理分表(水平/垂直);
5.表必须有主键,且设置id为自增主键;
6.库表字段等要规范且有意义的命名,使用蛇形命名且禁止大写;
7.引擎类型一律为InnoDB,如无特殊需求。禁止使用InnoDB/MyISAM/Memory以外的存储引擎;
8.表字段禁止NULL,必须NOT NULL default 默认值,NULL值会存在占用额外存储空间、索引失效等其他问题;
9.字段最好不要出现blob、text,实在需要时请使用拓展表;
10.唯一索引以“uq_”开头,普通索引以“idx_”开头;
11.索引个数最好不要超过5个;
12.join必须使用索引,in查询不要超过1000,合理使用join与in(笛卡尔积与子查询不用索引);
13.禁止写select *,同理禁止insert into t1 values(…);
14.UNION ALL替代UNION;
15.DML语句where条件必须用索引,注意表锁问题;
16.合理使用索引,注意索引左原则、索引失效,null值等的影响;

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 10

不错,都是基础且必须遵所的。有两三条没试过的,再试试。

1个月前 评论

text 不能默认null 应该默认是什么

1个月前 评论
konghou 1个月前
臭鼬 (作者) 1个月前
小李世界 1个月前
小李世界 1个月前
Diego_crazy (楼主) 1个月前

大部分是阿里那个mysql标准吧,我现在习惯基本就是这样操作的

1个月前 评论

为什么索引个数不要超过 5 个了

1个月前 评论

@PHPer技术栈 没啥为什么,建议不要超过5个,个人觉得5个已经不少了。索引越多,相应的负担坑定就越大,无论是性能(I/O)还是维护方面。

1个月前 评论
PHPer技术栈 1个月前
PHPer技术栈 1个月前
Diego_crazy (作者) (楼主) 1个月前

怎么解释 laravel 软删除 是 is null ?

1个月前 评论
raybon 1个月前
lufeijun1234 1个月前

@zwc4228986 这个不用解释,你愿意去用就应该明确且接受它可能会给你带来的影响。

1个月前 评论
aab

ORM 用习惯了 select * 这个感觉无解了

1个月前 评论
白小二

@cxlblm select * ,很可能会导致回表操作,其它的倒没啥

1个月前 评论

@Diego_crazy 为啥不是 =0 ,而是is null?

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!