数据库设计优化的一些思路

1. 数据库设计要合理(3F)

  • 第一范式(确保每列保持原子性)
  • 第二范式(确保表中的每列都和主键相关)
  • 第三范式(确保每列都和主键列直接相关,而不是间接相关)

2. 添加索引(普通索引,主键索引,唯一索引,全文索引)

  • explain 搜索计划,可以查看sql语句执行有没有使用索引
  • 索引优缺点:
    • 优点 :提高程序效率
    • 缺点: 增删慢,索引文件需要更新,
  • 使用注意:
    • 组合索引,使用两个条件或者第一个条件可以用到索引,使用第二个条件不会用到索引
    • 使用like '%xxx%'不会使用索引,使用'xxx%'可以使用索引
    • 使用or 需要所有条件都有索引,任一条件无索引则全表扫描
    • 判断null,要使用is null,不要使用= null
    • group by 会全表扫描
    • 分组的时候,禁止排序,可以提高查询效率,order by null
    • 使用>=的时候,会进行两次全表扫描,所以尽量用>
    • in 和 not in 会全表扫描,尽量不要使用
    • 查询量非常大,缓存,分表,分页

3. 分表分库技术(取模分表,水平分割,垂直分割)

  • 什么时候分库
    电商项目将一个项目进行拆分,拆分多个小项目,每个小的项目有自己单独数据库,互不影响----垂直分割 会员数据库,订单数据库,支付数据库
  • 什么时候分表
    水平分割 分表根据业务需求
    例如 存放日志(每年存放)根据年份表;腾讯QQ号,根据位数不均匀,手机号前三位,取模算法(保证均匀)

4. 读写分离

5. 存储过程

6. 配置mysql最大连接数(my.ini)

7. mysql服务器升级

8. 随时清理碎片化

  • optimize table 表名: 清理碎片化,myisam删除时,不是真实删除

9. sql语句优化

其他

  • mysql存储引擎
  • Myisam,InnoDB,Memory
  • InnoDB主流,有事务功能
  • Myisam有全文索引
  • Myisam表锁,InnoDB行锁
  • 都支持B-Tree数据结构
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容