本文主要介绍了mysql数据库的表结构优化方法,并总结分析了MYSQL在表结构优化中的相关技巧,如数据类型选择、规范化操作、表拆分等。有需要的可以参考一下。
本文结合实例描述了MYSQL数据库表结构的优化方法。分享给你,供你参考,如下:
选择合适的数据类型1.使用可以存储数据的最小数据类型。
2.使用简单的数据类型。在mysql处理上,Int比varchar简单。
3.尽可能使用not null来定义字段。
4.尽量少用文本类型,绝对必要时最好考虑子表。
使用int存储日期和时间,使用FROM _ UNIX time()[将int类型时间戳转换为日期和时间格式]和UNIX _ TIMESTAMP()[将日期和时间格式转换为int类型]进行转换。
使用bigint存储IP地址,使用INET_ATON()将IP格式转换为int,使用inet _ ntoa()将int格式转换为普通IP格式。
表的范式化和反范式化规范化是指数据库设计的规范。目前规范化一般指的是第三种设计范式,即要求数据表中任何候选关键字段都没有非关键字段。
的传递函数依赖符合第三范式。
不符合第三范式要求的表有以下问题:
1.数据冗余:(分类,分类描述)每一件商品都会被记录。
2.数据插入/更新/删除异常。
标准化操作:
反规范化指的是通过适当地向最初符合第三种查询效率范式的表添加冗余来优化查询效率。反规范化是一种以空间换时间的操作。
示例:
表的反规范化
订单信息的非规范化查询:
表的垂直拆分垂直拆分就是将原来多列的表格拆分成多个表格,解决了表格宽度的问题。通常,可以根据以下原则进行垂直拆分:
1.将不常用字段单独存储在一个表中。
2.在表中独立存储大型字段。
3.把经常用到的字段放在一起。
水平拆分表的水平拆分是为了解决单个表中数据太多的问题,水平拆分表中每个表的结构是完全一致的。
常见的水平拆分方法:
1.散列customer_id,如果你想把它分成5个表,使用mod(custoneer_id,5)得到0-4个值。
2.为不同的hashID在不同的表中保存数据。
对更多MySQL相关内容感兴趣的读者可以查看我们的专题:《MySQL查询技巧大全》、《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》和《MySQL数据库锁相关技巧汇总》。
希望这篇文章对大家的MySQL数据库有所帮助。