【最佳实践】 - MySQL

本文详细介绍了MySQL的开发规范与最佳实践,包括基础规范如使用InnoDB存储引擎、字符集设置,查询规范如避免使用LIKE做WHERE条件,表设计规范如使用DECIMAL代替FLOAT存储精确浮点数,以及索引设计规范如单表索引数量不超过10个等。

概述

本文介绍如何玩转 MySQL, 可以说是 MySQL 开发规范, 也可以理解为 MySQL 最佳实战.

一、基础规范

  1. 使用 InnoDB 存储引擎
  2. 数据库字符集使用 UTF8,校对字符集使用 utf8_general_ci
  3. 所有 字段 都尽量 添加注释
  4. 库名表名字段名 使用 小写字母,禁止 超过32个字符 ,须见名知意
  5. 非唯一索引“idx_字段1_字段2” 命名,唯一索引 必须以 “uniq_字段1_字段2” 命名

二、查询规范

  1. SQL 语句尽可能简单,大的 SQL 想办法 拆分 成小的 SQL 实现
  2. *不要使用SELECT ** ,查询具体要用到的字段
  3. 禁止 like 做 where 条件 (会全表扫描且不能用索引)
  4. 除非必要,避免使用 != 等非等值操作符 (会导致用不到索引)
  5. Where 条件里不要对列使用函数 (不会引用索引)
  6. 能确定返回结果只有一条时,使用limit 1 (LIMIT分页注意效率,LIMIT越大,效率越低)
  7. 少用 子查询,改用 JOIN(子查询要在内存里建临时表)
  8. 多表 JOIN 的字段,区分度最大的字段放在前面
  9. IN 条件里的 数据数量要尽量少超过200 个用 EXIST 代替 IN
  10. Where 字句中同一个表的 不同字段组合 建议 小于5组 (否则考虑分表)
  11. 禁止单条语句同时更新多个表
  12. 事务要尽量简单,整个事务的时间长度不要太长

三、表设计规范

  1. DECIMAL 代替 FLOATDOUBLE 存储精确浮点数(精确数据)
  2. 使用 TINYINT 代替 ENUM 类型(便于迁移时兼容)
  3. 尽可能不使用 TEXTBLOB 类型 (该数据类型不能设置默认值、不便于排序、不便于建立索引)
  4. 同一意义的字段设计定义必须相同(便于联表查询)
  5. 所有字段 均定义为 NOT NULL(避免使用NULL字段,NULL字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效)
  6. 表必须有主键不使用更新频繁的列做主键 、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键

四、索引设计规范

  1. 单表索引数量不超过10个
  2. 单个字段不要超过两个索引
  3. 新建的唯一索引必须不能和主键重复
  4. 避免冗余和重复索引
  5. 尽量不要在频繁更新的列上建立索引
  6. 不在低基数列上建立索引,例如状态、类型等
  7. 不在索引列进行数学运算和函数运算(参与了运算的列不会引用索引)
  8. 复合索引须符合最左前缀的特点建立索引(mysql使用复合索引时从左向右匹配)
  9. 重要的 SQLwhere 条件里的字段必须被索引
  10. Where 条件里的 字段顺序索引顺序 无关,优化器会自动调整
  11. 索引选择性 = Cardinality / Total Rows,即基数 ÷ 数据行数值越接近1说明使用索引的过滤效果越好
  12. 建立索引时,务必先explain,查看索引使用情况

最佳实践

666 彩蛋

刚开始写博客, 希望大家支持, 如果有没疑问或不清楚的地方可以留言噢!

下周再见~

基于遗传算法的新的异构分布式系统任务调度算法研究(Matlab代码实现)内容概要:本文档围绕基于遗传算法的异构分布式系统任务调度算法展开研究,重点介绍了一种结合遗传算法的新颖优化方法,并通过Matlab代码实现验证其在复杂调度问题中的有效性。文中还涵盖了多种智能优化算法在生产调度、经济调度、车间调度、无人机路径规划、微电网优化等领域的应用案例,展示了从理论建模到仿真实现的完整流程。此外,文档系统梳理了智能优化、机器学习、路径规划、电力系统管理等多个科研方向的技术体系实际应用场景,强调“借力”工具创新思维在科研中的重要性。; 适合人群:具备一定Matlab编程基础,从事智能优化、自动化、电力系统、控制工程等相关领域研究的研究生及科研人员,尤其适合正在开展调度优化、路径规划或算法改进类课题的研究者; 使用场景及目标:①学习遗传算法及其他智能优化算法(如粒子群、蜣螂优化、NSGA等)在任务调度中的设计实现;②掌握Matlab/Simulink在科研仿真中的综合应用;③获取多领域(如微电网、无人机、车间调度)的算法复现创新思路; 阅读建议:建议按目录顺序系统浏览,重点关注算法原理代码实现的对应关系,结合提供的网盘资源下载完整代码进行调试复现,同时注重从已有案例中提炼可迁移的科研方法创新路径。
【微电网】【创新点】基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度研究(Matlab代码实现)内容概要:本文提出了一种基于非支配排序的蜣螂优化算法(NSDBO),用于求解微电网多目标优化调度问题。该方法结合非支配排序机制,提升了传统蜣螂优化算法在处理多目标问题时的收敛性和分布性,有效解决了微电网调度中经济成本、碳排放、能源利用率等多个相互冲突目标的优化难题。研究构建了包含风、光、储能等多种分布式能源的微电网模型,并通过Matlab代码实现算法仿真,验证了NSDBO在寻找帕累托最优解集方面的优越性能,相较于其他多目标优化算法表现出更强的搜索能力和稳定性。; 适合人群:具备一定电力系统或优化算法基础,从事新能源、微电网、智能优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于微电网能量管理系统的多目标优化调度设计;②作为新型智能优化算法的研究改进基础,用于解决复杂的多目标工程优化问题;③帮助理解非支配排序机制在进化算法中的集成方法及其在实际系统中的仿真实现。; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注非支配排序、拥挤度计算和蜣螂行为模拟的结合方式,并可通过替换目标函数或系统参数进行扩展实验,以掌握算法的适应性调参技巧。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值