MYSQL优化之数据库结构优化-学习笔记(3)

本文介绍MySQL数据库优化的方法,包括合理选择数据类型、使用特定函数处理日期时间与IP地址、范式化与反范式化的设计策略,以及如何通过垂直拆分和水平拆分改善表结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MYSQL优化之数据库结构优化:

  1. 选择合适的数据类型

    1. 使用int来存储日期时间,利用FROM_UNIXTIME(),UNIX_TIMESTAMP()两个函数来进行转化,例如:

      Insert into test(create_date) values(UNIX_TIMESTAMP(‘2017-01-1313:12:00’));

      Select FROM_UNIXTIME(create_date)  from test;

    2. 利用bigint来存储IP地址,利用INET_ATON(),INT_NTOA()两个函数来进行转换

      例如:

      Insert into test(ipAddress) values(INET_ATON(’10.0.0.12’));

      Select INET_NTOA(ipAddress) from test;

  1. 表的范式化和反范式化

    1. 范式化是数据库设计的规范,目前说到范式化一般是指第三设计范式,也就睡要求数据表中不存在非关键字段对任意候选字段的传递函数依赖则符合第三范式。

      物品  分类  描述

       

      存在传递函数的依赖关系:

      物品->分类->描述

       

      缺点:1.造成表冗余。2.更新异常。3.插入异常。4.删除异常。

       

      解决方案:拆分。

    2. 反范式化优化:

      反范式化是指为了查询效率的考虑,把符合第三范式的表适当增加冗余,以达到优化查询效率的目的,反范式化是一种以空间换取时间的操作。

  2. 表的垂直拆分和水平拆分:

    垂直拆分:把一个有很多列的表拆分成多个表,解决表的宽度问题。通常垂直拆分可以按以下原则进行:

    1. 把不常用的字段单独存放在一个表中。

    2. 把大字段独立存到一个表中。

    3. 把经常一起使用的字段放到一起。

     水平拆分:为了解决表中的数据量过大的问题,水平拆分的每一张表的表结构相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值