mysql数据库设计开发_Mysql数据库开发设计原则

结合日常开发生产,总结Mysql数据库开发设计原则如下:

尽量不在数据库做运算

在mysql中尽量不要使用如:md5()、Order by Rand()等这类运算函数

尽量控制单表数据量

单表数据量过大后会影响数据查询效率

2.1单表数据量预估:

①. 纯INT不超过1000W

②. CHAR不超过500W

2.2同时要尽量做好合理的分表:

通过USERID来分表(根据ID区间分表)

按DATE分表(按天、周、月分表)

按AREA分表(省、市、区分表)

2.3分区表的适用场景主要有:

① 表非常大,无法全部存在内存,或者只在表的最后有热点数据,其他都是历史数据;

② 分区表的数据更易维护,可以对独立的分区进行独立的操作;

③ 分区表的数据可以分布在不同的机器上,从而高效使用资源;

④ 可以使用分区表来避免某些特殊的瓶颈;

⑤ 可以备份和恢复独立的分区。

避免使用NULL字段

在数据库表字段设计的时候尽量都加上NOT NULL DEFAULT ‘’

3.1 很难进行查询优化

3.2 NULL列加索引,需要额外空间

3.3 含NULL复合索引无效

不在数据库里存图片

如果将图片全部存在数据库,将使得数据库体积变大,会造成读写速度变慢。

图片存数据库的弊端:

对数据库的读/写的速度永远都赶不上文件系统处理的速度

数据库备份变的巨大,越来越耗时间

对文件的访问需要穿越你的应用层和数据库层

谨慎合理添加索引

添加索引是为了改善查询

添加索引会减慢更新

索引不是越多越好

能不加的索引尽量不加(综合评估数据密度和数据分布,最好不超过字段数20%)

结合核心SQL有限考虑覆盖索引

不在索引列做运算

索引列做运算会导致:

6.1无法使用索引

6.2全表扫描

1

2

尽量不用外键

7.1 外键可节省开发量

7.2 有额外开销

7.3 高并发时容易死锁

1

2

3

尽量不用SELECT*

用SELECT 时,将会更多的消耗CPU、内存、IO以及网络带宽,我们在写查询语句时,应当尽量不用SELECT ,只取需要的数据列

避免负向查询和%前缀模糊查询

在实际开发中,我们要尽量避免负向查询,那什么是负向查询呢,主要有以下:

NOT、!=、<>、!、NOT EXISTS、NOT IN、NOT LIKE等

1

同时,我们还要避免%前缀模糊查询,因为这样会使用B+ Tree,同时会造成使用不了索引,并且会导致全表扫描,性能和效率可想而知

减少COUNT(*)

在开发中我们经常会使用COUNT(),殊不知这种用法会造成大量的资源浪费,因为COUNT()资源开销大,所以我们能不用尽量少用

GROUP BY 去除排序

使用GROUP BY可以实现分组和自动排序

无需排序:Order by NULL

特定排序:Group by DESC/ASC

统一字符集为UTF8,统一命名规范

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值