笔记: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值等的影响;

其他分享:
为什么 MySQL 使用 B+ 树
MySQL 和 InnoDB

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10

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

2年前 评论

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

2年前 评论
巴啦啦臭魔仙 2年前
臭鼬 (作者) 2年前
小李世界 2年前
小李世界 2年前
Diego_crazy (楼主) 2年前

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

2年前 评论

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

2年前 评论

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

2年前 评论
PHPer技术栈 2年前
PHPer技术栈 2年前
Diego_crazy (作者) (楼主) 2年前

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

2年前 评论
raybon 2年前
lufeijun1234 2年前

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

2年前 评论
aab

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

2年前 评论
白小二

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

2年前 评论

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

2年前 评论

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